/を使用してフォルダ内の特定のファイルを作成するコードをPythonで作成しましたが、Windowsでコードを使用したい場合は動作しませんが、WindowsおよびLinuxでコードを使用する方法はありますか?.
Pythonでは、このコードを使用しています:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Windowsマシンでコードを使用すると、コードが機能しなくなります。
LinuxとWindowsの両方で「/」(ディレクトリ区切り記号)を使用するにはどうすればよいですか?
os.path.join()
を使用します。例:os.path.join(pathfile,"output","log.txt")
。
あなたのコードでは:rootTree.write(os.path.join(pathfile,"output","log.txt"))
つかいます:
import os
print os.sep
現在のOSでセパレータがどのように見えるかを確認します。
次のコードで使用できます。
import os
path = os.path.join('folder_name', 'file_name')
os.sep を使用できます。
>>> import os
>>> os.sep
'/'
os.path.normpath(pathname)
は、Windowsでは/
パス区切り文字を\
区切り文字に変換するため、言及する必要があります。また、冗長な上位レベルの参照も折りたたまれます。つまり、A/B
とA/foo/../B
とA/./B
はすべてA/B
になります。 Windowsの場合、これらはすべてA\B
になります。
あなたを助けるいくつかの便利なリンク:
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
import os
を実行してから、os.sep
を使用します
「os.sep」を使用できます
import os
pathfile=os.path.dirname(templateFile)
directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
rootTree.write(directory)
ディレクトリとファイル名を自分でビルドしないでください。Pythonに含まれているライブラリを使用してください。
この場合、関連するのは os.path です。特に、ディレクトリとファイル名またはディレクトリから新しいパス名を作成し、フルパスからファイル名を取得する分割を結合します。
あなたの例は
pathfile=os.path.dirname(templateFile)
p = os.path.join(pathfile, 'output')
p = os.path.join( p, 'log.txt')
rootTree.write(p)