ホームページ  >  記事  >  バックエンド開発  >  Pythonでファイル変更操作を実装するにはどうすればよいですか? (例付き)

Pythonでファイル変更操作を実装するにはどうすればよいですか? (例付き)

不言
不言転載
2018-10-09 16:41:092406ブラウズ

この記事の内容は、Python でファイルを変更する方法についてです。 (例もあり)ある程度参考になるので、困っている友人の参考になれば幸いです。

今日は Python でファイルを開く・ファイルを変更する・ファイルを閉じるという操作を実装する方法について説明します

この記事では 1 行ずつ説明する方法を採用しています。

アイデア:

ステップ 1: ファイルを読み取る
パート 2: 「w」モードを使用して新しいファイルに書き込む
パート 3: 削除元のファイルを削除し、新しいファイルの名前を元のファイルに戻します
これでファイルの変更操作は完了です

まず元のファイルの内容を見てみましょう

with open('xiakexing') as old_file:
    print(old_file.read())
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。

変更した内容作りたいのは、2行目の「Thousands of Miles Not Leaveing」を「Thousands of Miles Not Popular」に変更することです。
追加説明: with open()形式を使用すると、2つのファイルを同時に開くことができます。この場合、実際にはファイル xakexing が開かれ、ファイル xakexing.bak が作成され、対応するファイル オブジェクト old_file と new_file がそれぞれ作成されます

with open('xiakexing') as old_file,open('xiakexing.bak','w') as new_file:
#采用for循环从文件对象old_file里迭代地读取文件,简单来讲就是一行一行地读取文件,这样内存中只存储了一行文件的内容,节省了内存,也防止文件过大时造成的“超载”
    for i in old_file:
        if '千里不留行' in i: #这里每读取一行我们就对其进行条件判断,判断该行是否是我们要找的那一行
            i = i.replace('千','万')#当找到该行时,把该行的内容替换成我们想要的内容
#每读取一行我们就在新文件中写入一行,不管该行有没有变化,总之就是读一行、写一行、读一行、写一行
        new_file.write(i) 
#当for循环结束后,文件也已经被我们修改完毕了,这时应该删除旧文件,重命名新文件,为了实现这一目的,我们引入了os模块,os模块内主要是一些和操作系统有关的函数
import os            
os.remove('xiakexing') #删除原文件
os.rename('xiakexing.bak','xiakexing') #把新文件重命名回原文件名,最终实现了文件的修改

次に、ファイルの内容を見てみましょう

with open('xiakexing') as old_file:
    print(old_file.read())
赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,万里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金锤,邯郸先震惊。千秋二壮士,烜赫大梁城。
纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。

このようにして、ファイルの変更を実装しました。 open()でメソッドを使用しているため、ファイルを閉じる必要はありませんが、file=open()でファイルを開く場合は、最後にファイルを閉じる文を追加する必要があります。

以上がPythonでファイル変更操作を実装するにはどうすればよいですか? (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。