我有这个引用文件路径的函数:
some_obj.file_name(FILE_PATH)
其中FILE_PATH是文件路径的字符串,即H:/path/FILE_NAME.ext
我想在我的python脚本中创建一个文件FILE_NAME.ext,其中包含字符串的内容:
some_string = 'this is some content'
如何解决这个问题? Python脚本将放在Linux框中。
答案 0 :(得分:97)
我认为你正在寻找:http://docs.python.org/library/tempfile.html
import tempfile
with tempfile.NamedTemporaryFile() as tmp:
print(tmp.name)
tmp.write(...)
可是:
这个名称是否可以用来第二次打开文件,而命名的临时文件仍然是打开的,因此不同平台(它可以在Unix上使用;它不能在Windows NT或更高版本上使用)。
如果您担心这一点:
import os, tempfile
tmp = tempfile.NamedTemporaryFile(delete=False)
try:
print(tmp.name)
tmp.write(...)
finally:
os.unlink(tmp.name)
tmp.close()
答案 1 :(得分:49)
python有tempfile
module,但创建一个简单的文件也可以:
new_file = open("path/to/FILE_NAME.ext", "w")
现在您可以使用write
方法写信给它:
new_file.write('this is some content')
使用tempfile
模块,这可能如下所示:
import tempfile
new_file, filename = tempfile.mkstemp()
print(filename)
os.write(new_file, "this is some content")
os.close(new_file)
使用mkstemp
,您有责任在完成后删除该文件。使用其他参数,您可以影响文件的目录和名称。
<强>更新强>
正如Emmet Speer正确指出的那样,使用mkstemp
时有security considerations,因为客户端代码负责关闭/清理创建的文件。处理它的更好方法是以下代码段(取自链接):
import os
import tempfile
fd, path = tempfile.mkstemp()
try:
with os.fdopen(fd, 'w') as tmp:
# do stuff with temp file
tmp.write('stuff')
finally:
os.remove(path)
os.fdopen
将文件描述符包装在Python文件对象中,该对象在with
退出时自动关闭。对os.remove
的调用会在不再需要时删除该文件。