在Python中将变量传递给os.chdir
我在用Python程序里的变量来切换目录时,遇到了非常让人沮丧的问题。具体来说,假设我有:
index = '999'
os.environ['dir_name'] = 'Directory_Name_' + index
os.chdir('$dir_name')
这段代码给我报了个错:OSError: [Errno 2] 没有这样的文件或目录: '$dir_name'
而且
os.system('echo $dir_name')
返回的是'Directory_Name_999'(这是一个有效的目录名),
同样的
os.chdir('Directory_Name_999')
这段代码可以顺利切换目录,没有任何错误。
我到底哪里搞错了呢?
2 个回答
-1
对于其他寻找相同解决方案的人,你可以这样做:
index = '999'
dir_name = "Directory_Name_"+index
os.chdir(dir_name)
希望这对你有帮助。
4
你搞混了 os.system
能做的事情和 Python 能做的事情。os.system
知道 $dir_name
是一个叫 dir_name
的变量。它会查看环境变量,找到这个变量。
但是,Python 对 "$dir_name"
一无所知,它认为你在用一个普通的字符串。于是它尝试把目录改成这个字符串,但失败了,因为根本没有一个叫 "$dir_name"
的目录。
所以,你应该这样做:
index = '999'
os.environ['dir_name'] = "Directory_Name_"+index
os.chdir(os.environ['dir_name'])
你也可以让 os.system
来改变你的目录,因为它知道 "$dir_name"
的意思:
os.system('cd $dir_name')
但是为什么要用系统调用呢?直接让 Python 来做就行了。