Python-replace-inplace-close()删除.bak备份文件?

Python-replace-inplace-close()删除.bak备份文件?,python,Python,当我运行以下脚本时,文件系统中会留下一个.bak备份文件。 如何正确关闭()文件以便删除备份 #!C:\Python27\python.exe import os myRelease = os.environ.get("BUILD_STRING") myVersion = os.environ.get("VERSION_STRING") import fileinput import re files = ["C:\Projects\FileToSub.sbs"] for line in fil

当我运行以下脚本时,文件系统中会留下一个.bak备份文件。 如何正确关闭()文件以便删除备份

#!C:\Python27\python.exe
import os
myRelease = os.environ.get("BUILD_STRING")
myVersion = os.environ.get("VERSION_STRING")
import fileinput
import re
files = ["C:\Projects\FileToSub.sbs"]
for line in fileinput.FileInput(files,inplace=1):
   line = re.sub('whatever, thing', line)
   print line,
您可以调用该方法,例如

myfile.close()

您为什么不使用删除文件?您可以这样做:

import os

# call this after the end of your script
os.remove("C:\Projects\FileToSub.subs.bak")

fileinput
模块负责删除备份文件

我不完全确定您测试了什么,但您的python代码包含错误。“猜测”和“更正”版本:

import fileinput
import re
files = ["FileToSub1.sbs", "FileToSub2.sbs"]
for line in fileinput.FileInput(files, inplace=1):
    line = re.sub('whatever', 'thing', line)
    print line,
在strace输出中,您可以看到文件已自动删除:

unlink("FileToSub2.sbs.bak")            = -1 ENOENT (No such file or directory)
rename("FileToSub2.sbs", "FileToSub2.sbs.bak") = 0
open("FileToSub2.sbs.bak", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=30, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=30, ...}) = 0
open("FileToSub2.sbs", O_WRONLY|O_CREAT|O_TRUNC, 0100644) = 4
fcntl(4, F_GETFL)                       = 0x8001 (flags O_WRONLY|O_LARGEFILE)
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf3a988000
lseek(4, 0, SEEK_CUR)                   = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
chmod("FileToSub2.sbs", 0100644)        = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=30, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf3a987000
read(3, "whatever\nfile\nthing\nline\nwhas\n", 8192) = 30
read(3, "", 4096)                       = 0
read(3, "", 8192)                       = 0
write(4, "thing\nfile\nthing\nline\nwhas\n", 27) = 27
close(4)                                = 0
munmap(0x7fdf3a988000, 4096)            = 0
close(3)                                = 0
munmap(0x7fdf3a987000, 4096)            = 0
unlink("FileToSub2.sbs.bak")            = 0

但是备份文件对我来说仍然存在!可能是因为我在jenkins中运行python脚本?你能把
strace
输出添加到问题中吗?恐怕我不知道怎么做!你能给我一本白痴指南吗?我不知道是否有一本与窗户相当的指南。也许你可以使用这个:也检查这个页面::)当前。。。import stat os.chmod(“C:\Projects\FileToSub.sbs.bak”,stat.S_IWRITE)os.remove(“C:\Projects\FileToSub.sbs.bak”)`似乎可以完成这项工作,但感觉不对劲。也许Andreas Florath更接近您想要的。看我对他的回答的评论!