Reputation: 4038
I am trying to untar files in python. I give my program a file path with the main directory of the file, which has 9 sub directories and python it loops throught them,finds the tar files with a certain name and untars them.
So my output_text
file has my main directory,and i loop after that throught my 01-09
file numbers in that directory and unzip file with certain name in them.
I have written some code but what happens is nothing, no errors, no warnings nothing :
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()
Note: Even what I print out does not appear, what could be the cause?
EDIT: I modified my code and now got this
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", line 1672, in open raise ReadError("file could not be opened successfully") tarfile.ReadError: file could not be opened successfully
This is my mdodified code:
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()
NOTE : the file is a tgz file!!
Upvotes: 0
Views: 449
Reputation: 5875
for i in range(1,1):
does nothing. You won't get any iterations.
Give it a try:
>>> for i in range(1,1):
... print i
...
>>> for i in range(1,2):
... print i
...
1
I think you want something more like this:
EDIT: I've fixed and tested the following.
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):
will give you the sub directory numbers 1 - 9.
{:0>2}
will take the value of i and 0-pad it to be 2 digits. Removed the %
and used the newer format string syntax.
Fixed the tabbing of the for root, dir, files in os.walk(p):
line so that it will execute each time p
gets updated.
Replaced if not 'client-logs' or 'middleware-logs' in f:
with if not ('client-logs' in f or 'middleware-logs' in f):
because the test for middleware-logs
was failing.
Added path=p
argument to tar.extractall()
to ensure the tar file got extracted to the same folder in which it was found. You can remove this if it's not the desired behavior.
Before executing 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
After executing 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
Upvotes: 1