在我的 tempfile.TemporaryDirectory() 中找不到 Python3 的文件
Cannot find a file in my tempfile.TemporaryDirectory() for Python3
我一般在使用 Python3 的临时文件库时遇到问题。
我需要在一个临时目录中写入一个文件,并确保它在那里。我使用的第三方软件工具有时会失败,所以我不能直接打开文件,我需要先使用 'while loop' 或其他方法验证它是否存在,然后才能打开它。所以我需要搜索 tmp_dir (使用 os.listdir() 或等价物)。
具体 help/solution 和一般帮助将不胜感激。
谢谢。
小示例代码:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
print('tmp dir name', tmp_dir)
# write file to tmp dir
fout = open(tmp_dir + 'file.txt', 'w')
fout.write('test write')
fout.close()
print('file.txt location', tmp_dir + 'lala.fasta')
# working with the file is fine
fin = open(tmp_dir + 'file.txt', 'U')
for line in fin:
print(line)
# but I cannot find the file in the tmp dir like I normally use os.listdir()
for file in os.listdir(tmp_dir):
print('searching in directory')
print(file)
这是预期的,因为临时目录名称不以路径分隔符结尾(os.sep
、斜杠 或 反斜杠许多系统)。所以文件是在错误的级别创建的。
tmp_dir = D:\Users\foo\AppData\Local\Temp\tmpm_x5z4tx
tmp_dir + "file.txt"
=> D:\Users\foo\AppData\Local\Temp\tmpm_x5z4txfile.txt
相反,join
在临时目录中获取文件的两条路径:
fout = open(os.path.join(tmp_dir,'file.txt'), 'w')
请注意,fin = open(tmp_dir + 'file.txt', 'U')
找到了文件,这是预期的,但它在创建 tmp_dir
的同一目录中找到它。
我一般在使用 Python3 的临时文件库时遇到问题。
我需要在一个临时目录中写入一个文件,并确保它在那里。我使用的第三方软件工具有时会失败,所以我不能直接打开文件,我需要先使用 'while loop' 或其他方法验证它是否存在,然后才能打开它。所以我需要搜索 tmp_dir (使用 os.listdir() 或等价物)。
具体 help/solution 和一般帮助将不胜感激。
谢谢。
小示例代码:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
print('tmp dir name', tmp_dir)
# write file to tmp dir
fout = open(tmp_dir + 'file.txt', 'w')
fout.write('test write')
fout.close()
print('file.txt location', tmp_dir + 'lala.fasta')
# working with the file is fine
fin = open(tmp_dir + 'file.txt', 'U')
for line in fin:
print(line)
# but I cannot find the file in the tmp dir like I normally use os.listdir()
for file in os.listdir(tmp_dir):
print('searching in directory')
print(file)
这是预期的,因为临时目录名称不以路径分隔符结尾(os.sep
、斜杠 或 反斜杠许多系统)。所以文件是在错误的级别创建的。
tmp_dir = D:\Users\foo\AppData\Local\Temp\tmpm_x5z4tx
tmp_dir + "file.txt"
=> D:\Users\foo\AppData\Local\Temp\tmpm_x5z4txfile.txt
相反,join
在临时目录中获取文件的两条路径:
fout = open(os.path.join(tmp_dir,'file.txt'), 'w')
请注意,fin = open(tmp_dir + 'file.txt', 'U')
找到了文件,这是预期的,但它在创建 tmp_dir
的同一目录中找到它。