使用新目录运行python脚本

时间:2014-12-18 05:23:54

标签: python path

我最近开始研发一台新电脑。我的所有python文件和我的数据都在dropbox文件夹中,因此访问数据不是问题。然而," user"文件上的名称已更改。因此,我的os.chdir()操作都不起作用。显然,我可以使用查找和替换修改我的所有脚本,但如果我尝试使用旧计算机,那将无济于事。

目前,所有调用的目录都是这样的: " C:\Users\Old_Username\Dropbox\Path"
我想在新计算机上访问的文件如下所示: " C:\Users\New_Username\Dropbox\Path"

是否有某种try/except我可以构建到我的脚本中,如果第一次尝试不起作用,它会通过各种路径名选项?

谢谢!

3 个答案:

答案 0 :(得分:0)

认为文件 sq.py 包含这些代码(您的旧代):

C:/Users/Old_Username/Dropbox/Path

for x in range:
    #something
def Something():
    #something...

C:/Users/Old_Username/Dropbox/Path

然后一个新的.py文件运行这些代码:

with open("sq.py","r") as f:
    for x in f.readlines():
        y=x
        if re.findall("C:/Users/Old_Username/Dropbox/Path",x) == ['C:/Users/Old_Username/Dropbox/Path']:
            x="C:/Users/New_Username/Dropbox/Path"
            y=y.replace(y,x)

        print (y)

输出是:

C:/Users/New_Username/Dropbox/Path
for x in range:
    #something

def Something():
    #something...

C:/Users/New_Username/Dropbox/Path

希望你的解决方案至少可以帮助你解决问题。

答案 1 :(得分:0)

任何解决方案都涉及编辑代码;因此,无论如何你要编辑它 - 最好使它足够通用,以便它适用于所有平台。

How can I get the Dropbox folder location programmatically in Python?的回答中,如果此问题仅限于dropbox,则可以使用代码段。

对于更通用的解决方案,您可以使用环境变量来确定用户的主目录。

在Windows上,主目录的位置存储在%UserProfile%,在Linux和OSX上,它位于$HOME。幸运的是,Python将使用os.path.expanduser

为您处理所有这些问题
import os
home_dir = os.path.expanduser('~')

使用home_dir将确保在所有系统上解析相同的路径。

答案 2 :(得分:0)

知道最终我会移动或重命名我的项目或脚本,我总是在开头使用这段代码:

import os, inspect

this_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))

this_script = inspect.stack()[0][1]
this_script_name = this_script.split('/')[-1]

如果您使用完整但相对路径调用脚本,则this_script也不会包含完整路径。但是,this_dir将始终是目录的完整路径。