5

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

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

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

有任何想法吗?

环境: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()
4

2 回答 2

7

你也可以试试这样的

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

为了获得当前的工作目录,我使用了不同的方法

cur_dir = os.path.abspath(".")
于 2013-08-05T21:02:19.387 回答
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:\

这取决于你对这个脚本的真正目的是什么,你是真的需要当前的工作目录,还是只需要当前的脚本目录。作为一个小警告,如果您从脚本调用脚本然后使用此调用,则此调用将返回不同的目录。

于 2013-08-05T21:16:27.720 回答