我已经使用pyinstaller将我的python程序转换为exe。我的exe创建了一个临时文件夹_MEIxxxxx来保存文件。在同一文件夹中有一个文件正在被程序更改,但不幸的是它没有发生。 在程序中我更改文件夹以转到上面的文件夹:
os.chdir('C:\\Users\\Public')
for foldername in os.listdir():
if foldername.startswith('_MEI'):
myfolder = foldername
os.chdir('C:\\Users\\Public'+myfolder+'\\Quiz')
提前致谢。
答案 0 :(得分:1)
这不起作用:
os.chdir('C:\\Users\\Public'+myfolder+'\\Quiz')
因为myfolder
在开始时不包含\
。
不要硬编码C:\Users\Public
,请使用PUBLIC
env。 VAR
避免chdir
,它等同于所有模块之间共享的全局变量。如果某个模块需要一个当前目录,另一个模块需要另一个模块怎么办?
您的尝试看起来更像是移植到python cd xxx; ls; ...
的shell脚本。打破这个习惯。
使用作为参数传递的绝对路径/路径。我的建议:
pubdir = os.getenv("PUBLIC")
for foldername in os.listdir(pubdir):
if foldername.startswith('_MEI'):
myfolder = foldername
quizdir = os.path.join(pubdir,myfolder,'Quiz')
# now do something with quizdir
如果您需要一个绝对目录来运行系统调用,subprocess
函数有一个cwd
参数。因此,您可以在99%的时间内避免os.chdir
。