2016-09-07 6 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') 

:偽

任意の方法のTODOを適切にこの仕事を?最初にすべての正しい道を持つ最良の方法は何ですか?あなたは以下のようos.path.joinを使用する必要がパスに参加するために

+0

スラッシュをエスケープする必要はありませんが、バックスラッシュのみをエスケープする必要はありません。また、一般に、PythonのWindowsファイルパスを処理する場合は、生の文字列を使用する方が良いです。 –

+0

srm01への 'cd'だけでファイルを開くことはできませんか? –

+0

[Python windows path slash]の重複している可能性があります(http://stackoverflow.com/questions/19065115/python-windows-path-slash) – tripleee

答えて

2

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 
関連する問題