4개의 일반 텍스트 파일을 생성하는 프로그램(터미널에서 실행)이 있습니다.
예를 들어
./myprog
생성하다 file1.dat
, file2.dat
, file3.dat
, file4.dat
.
myprog
이 4개의 "파일 출력"을 실행하고 로드(읽기)할 수 있지만 실제 파일에 쓸 수는 없는(아마도 파일을 메모리에 로드할 수도 있음) 스크립트를 만들고 싶습니다 . 가능합니까?
그 이유는 이 파일이 약 70000개가 필요하기 때문에 추가 파일을 저장하는 데 시간을 낭비하고 싶지 않고 이 정보만 사용하면 되기 때문입니다.
===============================================
댓글로 구체적인 사례를 물어보세요
- 삼각법 소프트웨어(C로 작성된 수치 미적분학 그리드 생성을 위한 무료 소프트웨어) 파일을 읽으려면
mesh.poly
:
:
4 2 0 1
1 0 0 20
2 1 0 20
3 1 1 10
4 0 1 10
4 1
1 1 2 20 # bottom side
2 2 3 20 # right side
3 3 4 10 # top side
4 4 1 20 # left side
0
1
1 0.5 0.5 1 0.0005
- 이 명령은
triangle mesh.poly
다음 파일을 생성합니다.
mesh.node
:
4 2 0 1
1 0 0 20
2 1 0 20
3 1 1 10
4 0 1 10
그리고mesh.ele
2 3 0
1 4 1 2
2 2 3 4
그리고 다른 두 개의 파일로 총 4개의 출력 파일이 있습니다.
*.node
이 파일을 생성한 후 Fortran에 작성한 다른 프로그램에서 필요한 정보 와 정보를 사용해야 합니다*.ele
. 나는.sh
이것을 자동화하기 위해 파일을 작성할 생각이지만 Python이나 실행 가능한 프로그램을 실행할 수 있는 모든 언어를 사용할 수 있습니다.
로딩(읽기) mesh.node
이 mesh.ele
쉽습니다. 하지만 triangle
Fortran 코드에 대한 출력 및 입력으로 수천 개의 실제 파일을 생성해야 합니다 . 때문에,"더미 파일 쓰기" 방법을 찾고 있습니다.이것이 더 효율적이고 깨끗할 것이라고 생각했습니다.
내 질문예, 70000x4 출력을 생성하는 약 70000개의 파일이 있습니다 mesh.poly
(극소수).
답변1
aa를 사용할 수 있습니다.메모리 기반 파일 시스템(tmpfs), 또는FIFO(명명된 파이프)
배포판에 이미 tmpfs
지원되는 마운트 지점이 어딘가에 설정되어 있을 수도 있습니다. 모든 임시 파일에 사용할 수 있습니다. (예: /tmp/
일부 시스템 및 구성에서)
내 시스템에서는 기본적으로 /run/user/1000 아래에 충분히 큰 tmpfs가 있는데, 이는 지정한 <300MiB에 적합합니다.
머신의 루트라면 어딘가에 새 머신을 설치하여 사용할 수 있습니다.
실패: 일반 사용자로서 4개의 명명된 파이프를 설정하고 mkfifo
이를 "임시 저장 영역"으로 사용할 수 있습니다.
그러면 알고리즘은 다음과 같은 의사 코드 줄을 사용할 수 있습니다.
make_4_fifos_with_mkfifo
foreach polyfile in directory do
rename_fifos_to_use_given_prefix $polyfile
run triangle $polyfile
run fortranCMD polyfile.node $polyfile.ele ...
done
위 코드는 시스템에서 사용 가능한 다양한 스크립트 언어 중 하나를 사용하여 구현할 수 있습니다. 당신이 편안하다고 느끼는 것을 선택하십시오.
답변2
쉽습니다. Perl이나 tcl로 스크립트를 작성할 수 있습니다. 다음은 tcl의 예입니다.
set fp [open "somefile" r]
set file_data [read $fp]
close $fp
set data [split $file_data "\n"]
foreach line $data {
# do some line processing here
}
이 예에서 somefile은 파일 이름이고 내용은 file_data 변수에 복사됩니다.
더 많은 정보를 알고 싶다면http://wiki.tcl.tk/367