[英]How to insert strings and slashes in a path?
我試圖提取tar.gz文件,這些文件位於名為srm01,srm02和srm03的不同文件中。 該文件的名稱必須在輸入(字符串)中才能運行我的代碼。 我正在嘗試做這樣的事情:
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文件。 所以我試圖在glob之后僅打印路徑:
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')
給出:錯誤
有什么辦法可以正確地完成這項工作嗎? 首先擁有正確道路的最佳方法是什么?
為了連接路徑,您必須使用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))
os.path.join將為您的文件系統創建正確的路徑
f = os.path.join('C://Users//asediri//Downloads/srm/', thirdBloc, '*.tar.gz')
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.