如何在Python for Windows中打开/编辑文件而不锁定它?

2024-09-27 01:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经安装了pypiwin32,所以我可以使用win32file命令,但我对Python没有太多经验

我如何更改下面的代码,打开几个文件(我不担心锁定第一个文件),读取一行,然后替换/写入第二个文件中的一部分行?我不希望第二个文件在打开/写入时被锁定,从而利用Win32 API

with open("C:\\Temp\\Fileorg.txt", "rt") as fin:
 with open("C:\\Temp\\File2.txt", "wt") as fout:
  for line in fin:
   fout.write(line.replace('part/list.txt', 'part/list.txt?id='+text))

Tags: 文件命令txtaswithline经验open
1条回答
网友
1楼 · 发布于 2024-09-27 01:27:01

新行符号只是字符'\n'。如果文件为"line1\nline2",并且更改为"line1X\nline2",则必须重新写入'\n'之后的所有内容。输出文件必须被锁定

在这种情况下,可以使用文件共享来读取X之前的字符。但是在X上和之后以正确的顺序读取字符是一个巨大的挑战

  • 最好的选择是使用数据库

  • 第二个选项是写入临时文件"temp.tmp"。一旦手术结束 完成后,将整个文件从"temp.tmp"复制到"File2.txt"。复制文件很快。读取器可以检查文件是否可用,如果不可用,则应等待1秒,等待CopyFile完成,然后重试,最多5次(由数字1和5组成)

  • 第三种选择是使用格式化文本。例如,输出文件是

      0line1####
      0line2####
      0line3####
    

您只能通过更改#字符来修改此数据。每行开头的0表示该行不忙。如果写入程序正在更新该行,它会将0更改为1,然后返回

这样,数据更改时文件大小不会更改,您可以使用文件共享并在正确的位置查找数据。您可以添加数据,但删除数据会更困难。这将是一个大项目

相关问题 更多 >

    热门问题