파이썬 에서 파일을 untar하려고합니다 . 내 프로그램에 9 개의 하위 디렉토리가있는 파일의 기본 디렉토리가있는 파일 경로를 지정하고 python은이를 반복하고 특정 이름의 tar 파일을 찾아서 압축을 풉니 다.
그래서 내 output_text
파일에는 내 기본 디렉토리가 있으며 그 후 01-09
해당 디렉토리의 파일 번호를 반복 하고 특정 이름으로 파일의 압축을 풉니 다.
일부 코드를 작성했지만 아무 일도 일어나지 않고 오류가 없으며 경고가 없습니다 .
def main():
output_path = "/Users/rs/Documents/clients_file.txt"
path = []
with open(output_path) as f:
for exptini_path_raw in f:
exptini_path = exptini_path_raw.strip()
path.append(exptini_path)
for i in range(1,1):
for j in range(0,len(path)):
if i < 10:
p = "/%s/0%d/middleware"%(path[j],i)
else:
p = "/%s/%d/middleware"%(path[j],i)
for root, _, files in os.walk(p):
for f in files:
if not 'client-logs' or 'middleware-logs' in f:
continue
print 'going to extract %s'%f
f1 = os.path.join(p,f)
tar = tarfile.open(f1)
tar.extractall()
tar.close()
if __name__ == '__main__':
main()
참고 : 내가 인쇄 한 내용이 표시되지 않는데 원인은 무엇입니까?
편집 : 내 코드를 수정했고 이제 이것을 얻었습니다.
File "unzip_files.py", line 47, in <module>
main()
File "unzip_files.py", line 40, in main
tar = tarfile.open(f1)
File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", 줄 1672, 열기에서 ReadError ( "파일을 성공적으로 열 수 없습니다.") tarfile.ReadError : 파일이 발생할 수 있습니다. 성공적으로 열리지 않음
이것은 내 mdodified 코드입니다.
import os import os.path import tarfile
def main():
output_path = "/Users/rs/Documents/clients_file.txt"
path = []
with open(output_path) as f:
for exptini_path_raw in f:
exptini_path = exptini_path_raw.strip()
path.append(exptini_path)
print path
for i in range(1,10):
print i
for j in range(0,len(path)):
print j
if i < 10:
p = "/%s/0%d"%(path[j],i)
else:
p = "/%s/%d"%(path[j],i)
print p
for root, _, files in os.walk(p):
for f in files:
if not 'client-logs' or 'middleware-logs' in f:
continue
print 'going to extract %s'%f
f1 = os.path.join(p,f)
tar = tarfile.open(f1)
tar.extractall()
tar.close()
if __name__ == '__main__':
main()
참고 : 파일은 tgz 파일입니다 !!
for i in range(1,1):
아무것도하지 않습니다. 당신은 어떤 반복도 얻지 못할 것입니다.
시도 해봐:
>>> for i in range(1,1):
... print i
...
>>> for i in range(1,2):
... print i
...
1
나는 당신이 다음과 같은 것을 더 원한다고 생각합니다.
편집 : 다음을 수정하고 테스트했습니다.
untarscript.py
import os, tarfile
def main():
output_path = "/Users/rs/Documents/clients_file.txt"
path = []
with open(output_path) as f:
for exptini_path_raw in f:
exptini_path = exptini_path_raw.strip()
print "Adding to path: {}".format(exptini_path)
path.append(exptini_path)
for i in range(1,10):
for j in range(0,len(path)):
p = "{}/{:0>2}/middleware".format(path[j], i)
print "Path to search for tar files: {}".format(p)
for root, dirs, files in os.walk(p):
for f in files:
print "Investigating file: {}".format(f)
if not ('client-logs' in f or 'middleware-logs' in f):
print "This file does not match expected file name...skipping: {}".format(f)
continue
print 'going to extract {} to folder {}'.format(os.path.join(p,f), p)
f1 = os.path.join(p,f)
tar = tarfile.open(f1)
tar.extractall(path=p)
tar.close()
if __name__ == '__main__':
main()
for i in range(1,10):
하위 디렉토리 번호 1-9를 제공합니다.
{:0>2}
i의 값을 취하고 2 자리가되도록 0을 채 웁니다. 제거하고 %
최신 형식 문자열 구문을 사용했습니다 .
업데이트 for root, dir, files in os.walk(p):
될 때마다 실행되도록 줄 의 탭을 수정했습니다 p
.
에 대한 테스트 가 실패 했기 때문에 로 대체 if not 'client-logs' or 'middleware-logs' in f:
되었습니다 .if not ('client-logs' in f or 'middleware-logs' in f):
middleware-logs
tar 파일이 발견 된 동일한 폴더에 추출되었는지 확인하기 위해 path=p
인수를 추가 tar.extractall()
했습니다. 원하는 동작이 아닌 경우이를 제거 할 수 있습니다.
untarscript.py를 실행하기 전에 :
[[email protected] Documents]# pwd
/Users/rs/Documents
[[email protected] Documents]# ls -al
total 24
drwxr-xr-x 5 root root 4096 Oct 27 15:09 .
drwxr-xr-x 5 root root 4096 Oct 27 15:09 ..
-rw-r--r-- 1 root root 87 Oct 27 12:30 clients_file.txt
drwxr-xr-x 11 root root 4096 Oct 27 12:37 exptini1
drwxr-xr-x 11 root root 4096 Oct 27 12:37 exptini2
drwxr-xr-x 11 root root 4096 Oct 27 12:37 exptini3
[[email protected] Documents]# cat clients_file.txt
/Users/rs/Documents/exptini1
/Users/rs/Documents/exptini2
/Users/rs/Documents/exptini3
(stackoverflow)[[email protected] Documents]# tree
.
|-- clients_file.txt
|-- exptini1
| |-- 01
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 02
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 03
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 04
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 05
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 06
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 07
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 08
| | `-- middleware
| | `-- client-logs-archive.tar
| `-- 09
| `-- middleware
| `-- client-logs-archive.tar
|-- exptini2
| |-- 01
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 02
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 03
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 04
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 05
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 06
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 07
| | `-- middleware
| | `-- client-logs-archive.tar
| |-- 08
| | `-- middleware
| | `-- client-logs-archive.tar
| `-- 09
| `-- middleware
| `-- client-logs-archive.tar
`-- exptini3
|-- 01
| `-- middleware
| `-- client-logs-archive.tar
|-- 02
| `-- middleware
| `-- client-logs-archive.tar
|-- 03
| `-- middleware
| `-- client-logs-archive.tar
|-- 04
| `-- middleware
| `-- client-logs-archive.tar
|-- 05
| `-- middleware
| `-- client-logs-archive.tar
|-- 06
| `-- middleware
| `-- client-logs-archive.tar
|-- 07
| `-- middleware
| `-- client-logs-archive.tar
|-- 08
| `-- middleware
| `-- client-logs-archive.tar
`-- 09
`-- middleware
`-- client-logs-archive.tar
untarscript.py 실행 후 :
(stackoverflow)[[email protected] Documents]# tree
.
|-- clients_file.txt
|-- exptini1
| |-- 01
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_01
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 02
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_02
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 03
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_03
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 04
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_04
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 05
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_05
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 06
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_06
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 07
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_07
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 08
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini1_08
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| `-- 09
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini1_09
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- exptini2
| |-- 01
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_01
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 02
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_02
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 03
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_03
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 04
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_04
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 05
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_05
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 06
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_06
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 07
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_07
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| |-- 08
| | `-- middleware
| | |-- client-logs-archive.tar
| | `-- client-logs_exptini2_08
| | |-- test1.txt
| | |-- test2.txt
| | |-- test3.txt
| | |-- test4.txt
| | |-- test5.txt
| | |-- test6.txt
| | |-- test7.txt
| | |-- test8.txt
| | `-- test9.txt
| `-- 09
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini2_09
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
`-- exptini3
|-- 01
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_01
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 02
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_02
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 03
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_03
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 04
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_04
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 05
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_05
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 06
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_06
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 07
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_07
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
|-- 08
| `-- middleware
| |-- client-logs-archive.tar
| `-- client-logs_exptini3_08
| |-- test1.txt
| |-- test2.txt
| |-- test3.txt
| |-- test4.txt
| |-- test5.txt
| |-- test6.txt
| |-- test7.txt
| |-- test8.txt
| `-- test9.txt
`-- 09
`-- middleware
|-- client-logs-archive.tar
`-- client-logs_exptini3_09
|-- test1.txt
|-- test2.txt
|-- test3.txt
|-- test4.txt
|-- test5.txt
|-- test6.txt
|-- test7.txt
|-- test8.txt
`-- test9.txt
84 directories, 271 files
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다