How to get an absolute file path in Python
给定一个路径,如
1 | "C:/example/cwd/mydir/myfile.txt" |
1 2 3 | >>> import os >>> os.path.abspath("mydir/myfile.txt") 'C:/example/cwd/mydir/myfile.txt' |
如果它已经是一个绝对路径,也可以工作:
1 2 3 | >>> import os >>> os.path.abspath("C:/example/cwd/mydir/myfile.txt") 'C:/example/cwd/mydir/myfile.txt' |
您可以使用新的python 3.4库
要在Windows中获取绝对路径,请执行以下操作:
1 2 3 4 5 6 | >>> from pathlib import Path >>> p = Path("pythonw.exe").resolve() >>> p WindowsPath('C:/Python27/pythonw.exe') >>> str(p) 'C:\\Python27\\pythonw.exe' |
或在UNIX上:
1 2 3 4 5 6 | >>> from pathlib import Path >>> p = Path("python3.4").resolve() >>> p PosixPath('/opt/python3/bin/python3.4') >>> str(p) '/opt/python3/bin/python3.4' |
文档如下:https://docs.python.org/3/library/pathlib.html
1 2 3 4 | >>> import os >>> os.path.abspath('mydir/myfile.txt') 'C:\\example\\cwd\\mydir\\myfile.txt' >>> |
更好的是,安装
1 2 3 4 | >>> from path import path >>> path('mydir/myfile.txt').abspath() 'C:\\example\\cwd\\mydir\\myfile.txt' >>> |
今天,您还可以使用基于
1 2 3 4 5 6 | >>> from unipath import Path >>> absolute_path = Path('mydir/myfile.txt').absolute() Path('C:\\example\\cwd\\mydir\\myfile.txt') >>> str(absolute_path) C:\\example\\cwd\\mydir\\myfile.txt >>> |
我建议使用这个包,因为它提供了一个到公共os.path实用程序的干净接口。
python 3.4+
1 2 3 4 | from pathlib import Path relative = Path("mydir/myfile.txt") absolute = relative.absolute() # absolute is a Path object |
如果您只需要一个临时字符串,请记住,您可以在
1 2 3 | from os.path import abspath absolute = abspath(relative) # absolute is a str object |
1 2 | import os os.path.abspath(os.path.expanduser(os.path.expandvars(PathNameString))) |
注意,如果文件(或目录)名称和位置的给定表达式可能包含一个前导的
我更喜欢用glob
以下是如何列出当前文件夹中的所有文件类型:
1 2 3 | import glob for x in glob.glob(): print(x) |
以下是如何列出当前文件夹中的所有.txt文件:
1 2 3 | import glob for x in glob.glob('*.txt'): print(x) |
以下是如何列出所选目录中的所有文件类型:
1 2 3 | import glob for x in glob.glob('C:/example/hi/hello/'): print(x) |
希望这对你有帮助
模块
但是Linux中的大多数路径都是从EDOCX1(tilde)开始的,这并不能给出令人满意的结果。
所以你可以用
1 2 3 4 5 6 | >>> import os >>> os.path.abspath('~/hello/world') '/home/srb/Desktop/~/hello/world' >>> from srblib import abs_path >>> abs_path('~/hello/world') '/home/srb/hello/world' |
用
https://pypi.org/project/srblib网站/
即使从另一个脚本中调用当前脚本,它也总是获得正确的文件名。它在使用
1 2 3 | import sys,os filename = sys.argv[0] |
从这里,您可以通过以下方式获取脚本的完整路径:
1 2 | >>> os.path.abspath(filename) '/foo/bar/script.py' |
只要在目录层次结构中添加
获得CWD:
1 2 | >>> os.path.abspath(filename+"/..") '/foo/bar' |
对于父路径:
1 2 | >>> os.path.abspath(filename+"/../..") '/foo' |
通过将
如果有人正在使用python和linux并寻找文件的完整路径:
1 2 3 | >>> path=os.popen("readlink -f file").read() >>> print path abs/path/to/file |
如果你在Mac电脑上
1 2 | import os upload_folder = os.path.abspath("static/img/users") |
这将为您提供完整的路径:
1 | print(upload_folder) |
将显示以下路径:
1 | >>>/Users/myUsername/PycharmProjects/OBS/static/img/user |
1 2 3 | filePath = os.path.abspath(directoryName) filePathWithSlash = filePath +"\" filenameWithPath = os.path.join(filePathWithSlash, filename) |