python 处理数据库bak_Python-就地替换-用close()删除.bak备份文件?

当我运行以下脚本时,.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,

解决方法:

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

标签:python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值