Pythonで複数のサブフォルダを持つディレクトリ内のすべてのファイルの絶対パスを取得するにはどうすればよいですか?ディレクトリ内のすべてのファイルの絶対パスを取得する
私はos.walk()
が再帰的に私にディレクトリとファイルのリストを与えてくれることを知っていますが、それは私が望むものを私に与えてくれないようです。
Pythonで複数のサブフォルダを持つディレクトリ内のすべてのファイルの絶対パスを取得するにはどうすればよいですか?ディレクトリ内のすべてのファイルの絶対パスを取得する
私はos.walk()
が再帰的に私にディレクトリとファイルのリストを与えてくれることを知っていますが、それは私が望むものを私に与えてくれないようです。
os.path.abspath
はパスが絶対的であることを確認します。以下のヘルパー関数を使用します。
import os
def absoluteFilePaths(directory):
for dirpath,_,filenames in os.walk(directory):
for f in filenames:
yield os.path.abspath(os.path.join(dirpath, f))
import os
for root, dirs, files in os.walk(os.path.abspath("../path/to/dir/")):
for file in files:
print os.path.join(root, file)
さて、どういう意味なのか、私はファイルを望んでいないのですが、特定のサブディレクトリがほしいと思っています。私は以下の解決策を掲載しました。 –
あなたは絶対パスに相対パスを回すためにos.path.abspath()
を使用することができます。
file_paths = []
for folder, subs, files in os.walk(rootdir):
for filename in files:
file_paths.append(os.path.abspath(os.path.join(folder, filename)))
試してみてください。
import os
for root, dirs, files in os.walk('.'):
for file in files:
p=os.path.join(root,file)
print p
print os.path.abspath(p)
print
とにかく隠しファイルをキャプチャせずにこれを行うには? –
@MarcelMarino 'もしそうでなければfile.startswith( '。')' –
私はサブディレクトリの詳細ではなくファイルを維持したいし、それらにおける1つのXMLファイルでのみサブディレクトリを望んでいました。私は、このようにそれを行うことができます。
for rootDirectory, subDirectories, files in os.walk(eventDirectory):
for subDirectory in subDirectories:
absSubDir = os.path.join(rootDirectory, subDirectory)
if len(glob.glob(os.path.join(absSubDir, "*.xml"))) == 1:
print "Parsing information in " + absSubDir
あなたは、Python 3.4以降を使用している場合(古いPythonのバージョンを持っている場合、またはサードパーティのバックポート)あなたはpathlib
を使用することができます。
import pathlib
for filepath in pathlib.Path(directory).glob('**/*'):
print(filepath.absolute())
あなたがもらえあなたが期待する入出力の例 – cwallenpoole