这是我的脚本会做的
>>> import os
>>> os.mkdir(os.path.join(os.environ['TEMP'], 'HOME'))
>>> TEMPHOME = os.path.join(os.environ['TEMP'], 'HOME')
>>> TEMPHOME
'C:\\Users\\PURUSH~1\\AppData\\Local\\Temp\\HOME'
>>> os.chdir(TEMPHOME)
使用os.rmdir()尝试使用相同的目录抛出错误,如何使其工作?
>>> os.rmdir(TEMPHOME)
错误:
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
os.rmdir(TEMPHOME)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\PURUSH~1\\AppData\\Local\\Temp\\HOME'
答案 0 :(得分:2)
只需记住您的原始目录并在完成后恢复。
import os
TEMPHOME = os.path.join(os.environ['TEMP'], 'HOME')
orig_dir = os.getcwd()
try:
os.chdir(TEMPHOME)
.... do your work
finally:
os.chdir(orig_dir)
您可以通过在TemporaryDirectory
之上构建自己的上下文管理器来利用现有的临时目录代码import os
import tempfile
class TempChdir(tempfile.TemporaryDirectory):
def __enter__(self):
super().__enter__()
self.orig_dir = os.getcwd()
os.chdir(self.name)
return self
def __exit__(self, *args):
os.chdir(self.orig_dir)
super().__exit__(*args)
with TempChdir() as tmpdir:
... do your work
不确定这更容易,但看起来更漂亮。