我试图测试一个python代码,它将文件从源路径移动到目标路径。这个测试是在Python3中使用pytest完成的。但我现在遇到了障碍。这是,我试图删除源和目标路径在代码完成结束。为此,我使用了一个类似shutil的命令。rmtree(path)或os。rmdir(path)。这导致我的错误-“[WinError 32]该进程无法访问该文件,因为它正在被另一个进程使用”。请在这件事上帮助我。下面是python pytest代码:
import pytest
import os
import shutil
import tempfile
from sample_test_module import TestCondition
object_test_condition = TestCondition()
@pytest.mark.parametrize("test_value",['0'])
def test_condition_pass(test_value):
temp_dir = tempfile.mkdtemp()
temp_src_folder = 'ABC_File'
temp_src_dir = os.path.join(temp_dir , temp_src_folder)
temp_file_name = 'Sample_Test.txt'
temp_file_path = os.path.join(temp_src_dir , temp_file_name)
os.chdir(temp_dir)
os.mkdir(temp_src_folder)
try:
with open(temp_file_path , "w") as tmp:
tmp.write("Hello-World\n")
tmp.write("Hi-All\n")
except IOError:
print("Error has occured , please check it.")
org_val = object_test_condition.sample_test(temp_dir)
print("Temp file path is : " + temp_file_path)
print("Temp Dir is : " + temp_dir)
shutil.rmtree(temp_dir)
print("The respective dir path is now removed.)
assert org_val == test_value
在执行代码时,弹出以下错误:
[WinError 32]进程无法访问该文件,因为它正被另一个进程使用:'C:\Users\xyz\AppData\Local\Temp\tmptryggg56'
2条答案
按热度按时间r8uurelv1#
您得到此错误是因为您试图删除的目录是进程的当前目录。如果在调用
os.chdir
之前保存当前目录(使用os.getcwd()
),并在删除temp_dir
之前将chdir
保存回该目录,则应该可以工作。您的代码没有正确地缩进,因此我对它应该是什么样子的最佳猜测如下。
vc9ivgsu2#
删除前可以尝试关闭temp文件吗
temp.close()