Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何杀死os.chdir()并使用进一步的代码_Python - Fatal编程技术网

Python 如何杀死os.chdir()并使用进一步的代码

Python 如何杀死os.chdir()并使用进一步的代码,python,Python,这是我的脚本可以做的 >>> 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

这是我的脚本可以做的

>>> 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'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
os.rmdir(临时住宅)
WindowsError:[错误32]进程无法访问该文件,因为另一个进程正在使用它:“C:\\Users\\PURUSH~1\\AppData\\Local\\Temp\\HOME”

只需记住您的原始目录,完成后即可恢复

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

不确定这是否更简单,但看起来更华丽。

只要记住原始目录,完成后再恢复即可

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

不确定这是否更简单,但看起来更华丽。

您不需要将其作为当前工作目录
chdir
到其他地方。使用该目录的不是
os.chdir()
,而是您的应用程序在调用该命令后,您当前的应用程序(python shell)正在使用该目录,因此,您可以删除它。错误消息很清楚:另一个进程(例如资源管理器)正在锁定您的文件夹。不,实际上我必须更改目录并完成命令执行,然后返回删除。。打算这样做。如果您正在更改目录以使用
子进程执行命令,则有一个
cwd
标志,它将为您省去
chdir
的麻烦。使用
os.chdir()
是错误的做法。您不需要将其作为当前工作目录
chdir
到其他地方。使用该目录的不是
os.chdir()
,而是您的应用程序在调用该命令后,您当前的应用程序(python shell)正在使用该目录,因此,您可以删除它。错误消息很清楚:另一个进程(例如资源管理器)正在锁定您的文件夹。不,实际上我必须更改目录并完成命令执行,然后返回删除。。打算这样做。如果您正在更改目录以使用
子进程执行命令,则有一个
cwd
标志,它将为您省去
chdir
的麻烦。使用
os.chdir()
是不好的做法。