在Python中将变量传递给os.chdir

0 投票
2 回答
5159 浏览
提问于 2025-04-18 04:37

我在用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 来做就行了。

撰写回答