web-dev-qa-db-ja.com

PythonでLinuxとWindowsの両方で "/"(ディレクトリ区切り文字)を使用する方法は?

/を使用してフォルダ内の特定のファイルを作成するコードをPythonで作成しましたが、Windowsでコードを使用したい場合は動作しませんが、WindowsおよびLinuxでコードを使用する方法はありますか?.

Pythonでは、このコードを使用しています:

pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')

Windowsマシンでコードを使用すると、コードが機能しなくなります。

LinuxとWindowsの両方で「/」(ディレクトリ区切り記号)を使用するにはどうすればよいですか?

142
hulk007

os.path.join()を使用します。例:os.path.join(pathfile,"output","log.txt")

あなたのコードでは:rootTree.write(os.path.join(pathfile,"output","log.txt"))

214
Serban Razvan

つかいます:

import os
print os.sep

現在のOSでセパレータがどのように見えるかを確認します。
次のコードで使用できます。

import os
path = os.path.join('folder_name', 'file_name')
83

os.sep を使用できます。

>>> import os
>>> os.sep
'/'
52
Adem Öztaş

os.path.normpath(pathname) は、Windowsでは/パス区切り文字を\区切り文字に変換するため、言及する必要があります。また、冗長な上位レベルの参照も折りたたまれます。つまり、A/BA/foo/../BA/./BはすべてA/Bになります。 Windowsの場合、これらはすべてA\Bになります。

29
Jon Rosen

あなたを助けるいくつかの便利なリンク:

13
Maroun

Python 3.4以降を実行できるほど幸運な場合は、 pathlib を使用できます。

from pathlib import Path

path = Path(dir, subdir, filename)  # returns a path of the system's path flavour

または、同等に、

path = Path(dir) / subdir / filename
10
Eugene Yarmash

import osを実行してから、os.sepを使用します

8
JackPoint

os.sep」を使用できます

 import os
 pathfile=os.path.dirname(templateFile)
 directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
 rootTree.write(directory)
7
P113305A009D8M

ディレクトリとファイル名を自分でビルドしないでください。Pythonに含まれているライブラリを使用してください。

この場合、関連するのは os.path です。特に、ディレクトリとファイル名またはディレクトリから新しいパス名を作成し、フルパスからファイル名を取得する分割を結合します。

あなたの例は

pathfile=os.path.dirname(templateFile)
p = os.path.join(pathfile, 'output')
p = os.path.join( p, 'log.txt')
rootTree.write(p)
4
Mark