我已经摸索了一段时间,我在想也许在python中没有真实的的方法来做到这一点,最好的方法是总是让用户找出他们的绝对路径,并将其传递给我的函数,我可以运行它。
如果我从代码read_file.py
所在的目录中运行,这个代码就可以工作了。但是,如果我在cd ..
上导航一个目录并尝试运行python my_directory/read_file.py
,则会失败,并说找不到文件。
有没有一种方法,我可以通过在相对路径,并有它总是工作,无论我在哪里的终端,并运行此代码。我有NodeJS和Java背景。
输入
"""
read the a file from a path with both relative and absolute value to see which one works
the function accepts a path value instead of a str value
"""
import os
from pathlib import Path
def read_file_resolve(file_path: Path) -> None:
file_path = file_path.resolve()
with file_path.open() as f:
print(f.read())
def read_file_os_absolute(file_path: Path) -> None:
file_path = os.path.abspath(file_path)
file_path = Path(file_path)
with file_path.open() as f:
print(f.read())
if __name__ == "__main__":
my_file_path = Path("./upload_to_s3/my_downloaded_test.txt")
# Get the absolute path to the file.
# absolute_file_path = os.path.abspath(my_file_path)
# Read the file.
try:
read_file_resolve(file_path=my_file_path)
print("resolve worked")
except Exception:
read_file_os_absolute(file_path=my_file_path)
print("os abs worked")
输出:
FileNotFoundError: [Errno 2] No such file or directory
但是当我从它所在的目录中运行它时,它工作正常
1条答案
按热度按时间moiiocjp1#
__file__
是脚本本身的路径。假设你的相对路径总是相对于脚本位置,例如:
用途:
那么当前目录就不重要了。