2016-09-07 85 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