我最近开始研发一台新电脑。我的所有python文件和我的数据都在dropbox文件夹中,因此访问数据不是问题。然而," user
"文件上的名称已更改。因此,我的os.chdir()
操作都不起作用。显然,我可以使用查找和替换修改我的所有脚本,但如果我尝试使用旧计算机,那将无济于事。
目前,所有调用的目录都是这样的:
" C:\Users\Old_Username\Dropbox\Path
"
我想在新计算机上访问的文件如下所示:
" C:\Users\New_Username\Dropbox\Path
"
是否有某种try/except
我可以构建到我的脚本中,如果第一次尝试不起作用,它会通过各种路径名选项?
谢谢!
答案 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将始终是目录的完整路径。