2016-09-07 37 views
0

我试图提取位于名为srm01,srm02和srm03的不同文件中的tar.gz文件。 该文件的名称必须在输入(一个字符串)来运行我的代码。 我试图做这样的事情:如何在路径中插入字符串和斜杠?

import tarfile 
import glob 

thirdBloc = 'srm01' #Then, that must be 'srm02', or 'srm03' 
for f in glob.glob('C://Users//asediri//Downloads/srm/'+thirdBloc+'/'+'*.tar.gz'): 
    tar = tarfile.open(f) 
    tar.extractall('C://Users//asediri//Downloads/srm/'+thirdBloc) 

我有这样的错误消息:

IOError: CRC check failed 0x182518 != 0x7a1780e1L 

我首先要确保我的代码中找到。tar.gz的文件。于是,我就只是打印水珠后,我的路径:

thirdBloc = 'srm01' #Then, that must be 'srm02', or 'srm03' 
for f in glob.glob('C://Users//asediri//Downloads/srm/'+thirdBloc+'/'+'*.tar.gz'): 
    print f 

这给:

C://Users//asediri//Downloads/srm/srm01\20160707000001-server.log.1.tar.gz 
C://Users//asediri//Downloads/srm/srm01\20160707003501-server.log.1.tar.gz 

的os.path.exists方法告诉我,我的文件不存在。

print os.path.exists('C://Users//asediri//Downloads/srm/srm01\20160707000001-server.log.1.tar.gz') 

这给了:假

任何方式待办事项正确这项工作?首先拥有正确的道路的最佳途径是什么?

+0

您不需要转义正斜杠,只需要反斜杠。另外,在处理python中的Windows文件路径时,最好使用原始字符串。 –

+0

难道你不能只是'cd'到srm01并在那里打开你的文件? –

+0

[Python窗口路径斜杠]的可能重复(http://stackoverflow.com/questions/19065115/python-windows-path-slash) – tripleee

回答

2

为了加入,你必须使用os.path.join如下路径:

import os 

import tarfile 
import glob 

thirdBloc = 'srm01' #Then, that must be 'srm02', or 'srm03' 
for f in glob.glob(os.path.join('C://Users//asediri//Downloads/srm/', thirdBloc, '*.tar.gz'): 
    tar = tarfile.open(f) 
    tar.extractall(os.path.join('C://Users//asediri//Downloads/srm/', thirdBloc)) 
+0

如果答案正在工作,请确认它! –

0

os.path.join将创建正确的路径,你的文件系统

f = os.path.join('C://Users//asediri//Downloads/srm/', thirdBloc, '*.tar.gz') 
0

C://Users//asediri//Downloads/srm/srm01\20160707000001-server.log.1.tar.gz

决不使用\ python作为文件路径,\ 201是\ x81字符。它导致这样:

C://Users//asediri//Downloads/srm/srm01ü60707000001-server.log.1.tar.gz

这就是为什么os.path.exists没有找到它

或者使用(r"C:\...")

我建议你这样做:

import os 
os.chdir("C:/Users/asediri/Downloads/srm/srm01") 
for f in glob.glob(str(thirdBloc) + ".tar.gz"): 
    print f