例如,这是我的目录树:
+--- test.py
|
+--- [subdir]
|
+--- another.py
测试.py:
import os
os.system('python subdir/another.py')
另一个.py:
import os
os.mkdir('whatever')
运行 test.py 后,我希望有一个文件夹whatever
,subdir
但我得到的是:
+--- test.py
|
+--- [subdir]
| |
| +--- another.py
|
+--- whatever
原因很明显:工作目录没有更改为subdir
. 那么在不同文件夹中执行 .py 文件时是否可以更改工作目录?笔记:
- 任何功能都是允许的,
os.system
只是一个例子 os.system('cd XXX')
并且os.chdir
不允许
编辑:最后我决定使用上下文管理器,遵循
https://stackoverflow.com/posts/17589236/edit中的答案
import os
import subprocess # just to call an arbitrary command e.g. 'ls'
class cd:
def __init__(self, newPath):
self.newPath = newPath
def __enter__(self):
self.savedPath = os.getcwd()
os.chdir(self.newPath)
def __exit__(self, etype, value, traceback):
os.chdir(self.savedPath)
# Now you can enter the directory like this:
with cd("~/Library"):
# we are in ~/Library
subprocess.call("ls")
# outside the context manager we are back where we started.