簡體   English   中英

如何在路徑中插入字符串和斜杠?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM