将文件路径传递到另一个位置的另一个 Python 文件
Passing path of file to another Python File in Another Location
我在另一个需要图像文件路径的位置有一个 Python 文件。这是文件结构:
Main_Dir
- main.py
- test.jpg
- Second_Dir
- other.py
我的 main.py
正在调用 other.py
中的函数并将 "test.jpg"
作为参数传递。显然,other.py
看不到这张图片,因为它不在它的目录中。有没有办法让 other.py
使用 test.jpg
而不必传递绝对路径?
main.py
process_image("test.jpg")
other.py
def process_image(image_path):
rotate(image)
a*b = c
....
错误:
No such file or directory: 'test.jpg'
您可能想使用文件的 'absolute path',这是可以在同一台计算机上的任何位置使用的完整路径:
from pathlib import Path
process_image(Path("test.jpg").absolute())
更好的可能是 .resolve()
,它也将解析任何符号链接,并且只为您提供正在传递的对象的 'real' 路径。
process_image(Path("test.jpg").resolve())
但是,简单的导入不会更改脚本的工作目录 - 脚本不会简单地使用它自己的位置作为参考。所以,如果你不在它实际所在的文件夹中启动 main.py
,你可能仍然有问题。
要解决这个问题,请在首次启动程序时获取 main.py
脚本的位置:
location = Path(__file__).parent()
my_file = (location / 'test.jpg').resolve()
process_image(my_file)
这是有效的,因为 __file__
将包含调用它的脚本的文件名,.parent()
获取父文件夹(即脚本所在的文件夹),其余部分与前。请注意 Path('dir') / 'name.ext'
只是构建路径的一种好方法 - Python 允许 'dividing' 通过字符串 Path
来扩展路径。
注意:不要担心您可能会在已解析的路径中看到正斜杠。尽管 Windows 并不总是支持使用正斜杠,但 Python 函数支持(除非您使用 Python 函数直接执行某些 Windows 命令)。正斜杠是每个 OS 的标准,除了 Windows,这就是为什么 Python 默认使用它 - 出于多种原因使用它们并不是一个坏主意。
我在另一个需要图像文件路径的位置有一个 Python 文件。这是文件结构:
Main_Dir
- main.py
- test.jpg
- Second_Dir
- other.py
我的 main.py
正在调用 other.py
中的函数并将 "test.jpg"
作为参数传递。显然,other.py
看不到这张图片,因为它不在它的目录中。有没有办法让 other.py
使用 test.jpg
而不必传递绝对路径?
main.py
process_image("test.jpg")
other.py
def process_image(image_path):
rotate(image)
a*b = c
....
错误:
No such file or directory: 'test.jpg'
您可能想使用文件的 'absolute path',这是可以在同一台计算机上的任何位置使用的完整路径:
from pathlib import Path
process_image(Path("test.jpg").absolute())
更好的可能是 .resolve()
,它也将解析任何符号链接,并且只为您提供正在传递的对象的 'real' 路径。
process_image(Path("test.jpg").resolve())
但是,简单的导入不会更改脚本的工作目录 - 脚本不会简单地使用它自己的位置作为参考。所以,如果你不在它实际所在的文件夹中启动 main.py
,你可能仍然有问题。
要解决这个问题,请在首次启动程序时获取 main.py
脚本的位置:
location = Path(__file__).parent()
my_file = (location / 'test.jpg').resolve()
process_image(my_file)
这是有效的,因为 __file__
将包含调用它的脚本的文件名,.parent()
获取父文件夹(即脚本所在的文件夹),其余部分与前。请注意 Path('dir') / 'name.ext'
只是构建路径的一种好方法 - Python 允许 'dividing' 通过字符串 Path
来扩展路径。
注意:不要担心您可能会在已解析的路径中看到正斜杠。尽管 Windows 并不总是支持使用正斜杠,但 Python 函数支持(除非您使用 Python 函数直接执行某些 Windows 命令)。正斜杠是每个 OS 的标准,除了 Windows,这就是为什么 Python 默认使用它 - 出于多种原因使用它们并不是一个坏主意。