Python os.system()调用在不正确的目录中运行

时间:2013-08-05 19:36:44

标签: python windows

我的同事在安装Python时遇到问题。运行下面的代码时,从'C:\my\folder\'返回'C:\'而不是当前工作目录。当我或其他任何人在我们的系统上运行脚本时,我们得到'C:\my\folder\'

我们假设某些全局设置必然导致问题,所以我让这个人卸载Python,删除本地Python2.7文件夹,清理注册表并重新安装Python,但它仍然无法正常工作。 / p>

注意:我们有大量遗留脚本,因此修改所有这些脚本以使用子流程是不切实际的。 :(

有什么想法吗?

环境:Windows XP,Python 2.7

import os

#
#  This test script demonstrates issue on the users computer when python invokes
#  a subshell via the standard os.system() call.
#

print "This is what python thinks the current working directory is..."
print os.getcwd()
print
print

print "but when i execute a command *from* python, this is what i get for the current working directory"
os.system('echo %cd%')

raw_input()

2 个答案:

答案 0 :(得分:4)

你也可以尝试这样的事情

os.chdir("C:\\to\\my\\folder")
print os.system("echo %CD%")
raw_input()

也可以使用不同的方法来获取当前的工作目录

cur_dir = os.path.abspath(".")

答案 1 :(得分:2)

os.getcwd()无法保证在调用脚本时获取脚本的位置。您的同事可能以不同的方式调用脚本,或者他的计算机(由于某种原因)以不同的方式处理当前的工作目录。

要获取实际的脚本位置,您应该使用以下内容:

import os
os.path.dirname(os.path.realpath(__file__))

作为一个例子,我在同一个脚本中写了getcwd和上面一行,并从C:\运行。

结果:

C:\>python C:\Users\pies\Desktop\test.py
C:\Users\pies\Desktop
C:\

这取决于您对此脚本的真正目的是什么,您是否确实需要当前工作目录,或仅仅是当前脚本目录。如果您从脚本调用脚本然后使用此调用,则此调用将返回一个不同的目录。