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

Python os.system()调用在不正确的目录中运行,python,windows,Python,Windows,我的同事在安装Python时遇到问题。运行下面的代码时,从'C:\my\folder\'返回'C:\',而不是当前工作目录。当我或其他人在我们的系统上运行脚本时,我们会得到'C:\my\folder\' 我们假设一定是某个全局设置导致了这个问题,所以我让该人员卸载Python,删除本地Python2.7文件夹,清理注册表并重新安装Python,但它仍然不起作用 注意:我们有大量遗留脚本,因此修改所有脚本以使用子流程是不切实际的:( 有什么想法吗 环境:Windows XP、Python 2.7

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

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

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

有什么想法吗

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

你也可以试试这样的

os.chdir("C:\\to\\my\\folder")
print os.system("echo %CD%")
raw_input()
为了得到当前的工作目录,我使用了不同的方法

cur_dir = os.path.abspath(".")
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:\

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

可以说,您应该仅在以下情况下使用当前工作目录:脚本对其中的文件进行操作。也就是说,不要依赖当前工作目录作为程序所在的位置或任何其他预定位置。路径:c:\Python27\Lib\site packages\PyQt4;c:\Python27;c:\Python27\scripts;…以及与python无关的所有MS Visual Studio内容脚本使用系统调用,如图所示调用其他应用程序(如7za)。重写我们的脚本库是不切实际的,因为它对其他人都有效。这让我们相信这是用户的问题,而不是脚本的问题。是的,这似乎确实是一个环境问题。如果没有电脑,我帮不上什么忙,但祝你好运!如果你找到答案,让我知道,这听起来很有趣。