我有一个脚本可以从两个目录中提取文件,所以脚本位于:
/folder2/folder1/folder0/script.py
,将要处理的文件将在folder2中。
我可以用“..//”取回一个级别(我正在使用cx_free创建一个Windows可执行文件),但我认为这不是最好的方法。
我正在设置输入目录和输出目录。我想保留相对于脚本位置的路径,以便可以移动“folder2”而不会搞砸脚本的功能或强制重写它。
感谢
答案 0 :(得分:3)
首先,您将获得脚本所在的目录,如下所示:
current_dir = os.path.dirname(os.path.realpath(__file__))
然后,如果你知道你将始终使用上面两个级别的目录,只需使用:
target_dir = os.path.join(current_dir, '..', '..')
从那里你可以随意操作target_dir中的文件。
修改强>
从adsmith,您可以将target_dir定义为:
,而不是将两个“..”路径连接在一起。target_dir = os.path.sep.join(current_dir.split(os.path.sep)[:-2])
这将简单地切断你路径中的最后两个目录,而不是以几个丑陋的“..”结尾。所以,第一种方法看起来像:
/path/to/folder2/folder1/directory/../..
而第二种实现方式是:
/path/to/folder2/
答案 1 :(得分:0)
我会使用您建议的os.chdir(r'..\..')
方法来确保您当前的工作目录位于folder2
。我不确定你问的是什么,所以也许澄清为什么你认为这不是正确的解决方案?