在 Python 中调用相对路径

凯文纳什

我在 Python 脚本下面有这个,它从一个位置获取文件并将其复制到另一个目标位置。如果我用绝对位置定义路径,下面的代码就可以正常工作。

我试图使用变量来定义它,完成后不执行脚本。没有抛出错误,但代码似乎没有执行。

代码:

Path_from = r'/Users/user/Desktop/report'
Path_to = r'/Users/user/Desktop/report'

for root, dirs, files in os.walk((os.path.normpath(Path_from)), topdown=False):
        for name in files:
            if name.endswith('{}.txt'.format(date)):
                print
                "Found"
                SourceFolder = os.path.join(root, name)
                shutil.copy2(SourceFolder, Path_to)

我想更改代码

Path_from = r'/Users/user/Desktop/report'

base_path = /Users/user/Desktop/
Path_from = r'base_path/{}'.format(type)
丹尼尔·法雷尔

我建议您将所有当前工作目录的问题留给用户 - 如果他们想指定一个相对路径,他们可以在调用 python 并提供相对路径之前进入它相关的目录。

这就是几乎每个 linux 工具和程序所做的 - 它们很少采用“基本路径”,而是将提供相对于当前目录(或绝对)的有效路径的工作留给用户。

如果您致力于将另一个参数作为相对路径的想法,那么这样做应该非常简单。您的示例没有有效的 python 语法,但很接近:

$ cat t.py
from os.path import join
basepath="/tmp"
pathA = "fileA"
pathB = "fileB"
print(join(basepath,pathA))
print(join(basepath,pathB))

但是请注意,这会阻止在脚本执行时提供绝对路径。

你可以改用一种格式,

basepath="/tmp"
pathA = "fileA"
pathB = "fileB"
print( "{}/{}".format(basepath, pathA) )
print( "{}/{}".format(basepath, pathB) )

但是,您假设您知道如何连接相关操作系统上的路径,这就是os.path.join存在的原因

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章