• python操作文件


    1、覆盖输入,
    
    import os 
    f=open("/root/d.txt","w+") #打开目标文件,w+是以读写方式打开,同r+
    f.write("effortsing") #写入内容
    f.close() #关闭文件
    
     
    
    2、追加输入,用with方式,就不用写f.close(),会自动关闭
    
    with open("/root/d.txt","a") as f:
    f.write(info)
    
     
    
    
    3、批量追加文件
    
    
    # -*- coding:UTF-8 -*-
    import subprocess
    import sys
    import os
    
    
    my_cnf='''
    
    [mysqld]
    
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    socket=/tmp/mysql.sock
    #不区分大小写 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个简单来说就是sql语句是否严格)
    lower_case_table_names = 1
    log-error=/var/log/mysqld.log
    pid-file=/usr/local/mysql/data/mysqld.pid
    
    '''
    
    
    with open("/root/h.txt","a") as f:
    f.write(my_cnf)
    f.close()
    
     
    
    4、追加多行文字操作
    
    with open('test3.txt','a+') as f:
    
      text=['[text]' + os.linesep,'hello' + os.linesep,'127.0.0.1' + os.linesep]
    
      f.writelines(text)
    
      for line in f.readlines():
    
      line.strip('
    ')
    
     
    
    5、清空文件
    
    with open('test3.txt','r+') as f:
    
      f.truncate()
    
     
    
     6、文件第一行总是有空行问题:
    
    用python往空文件里面追加几行文字后,再用readlines查看,总是显示第一行是空行。原因:是因为用 Linux下echo 情况文件导致的,echo 默认追加空行
    
     
    
    7、读文件结果跟linux效果一样
    
    with open('/etc/ansible/ansible.cfg','r+') as f:
    
      for line in f:
    
        print(line.strip()) 
    
     
    
    8、用readline 一行行读文件结果跟linux效果一样 (建议用这个)
    
    with open('/etc/ansible/ansible.cfg','r+') as f:
    
      while True:
    
         url=f.readline()
    
         url=url.rstrip()
    
        if url=='':
    
          break
    
        else:
    
          print(url)
    
    
    9、从一个文件读内容同时写到另一个文件
    
    ms=open("/root/.bash_history") 
    for line in ms.readlines(): 
        with open('/backup/history.txt','a+') as mon: 
            mon.write(line)
    
    ms.close()
    
    
    
    10、对文件内容查找替换
    
    如果想要修改文件中的某一行或者某一个位置的内容,在python中是没有办法直接实现的,只能先把文件所有的内容全部读取出来,然后进行匹配修改后写入到新的文件中。
    
    特别注意:被替换的文件必须是 python文件, 例如想要把python文件中的变量替换为真实的值需要进行如下操作: 查看原文件内容: 注意:TOKEN不能写成$TOKEN,否则查看文件会变成空格 cat
    > /k8s/profile/token.py << EOF TOKEN,kubelet-bootstrap,10001,"system:kubelet-bootstrap" EOF 定义变量 In [7]: output=subprocess.check_output(["head -c 16 /dev/urandom | od -An -t x | tr -d ' '"], shell=True) In [9]: token=str(output.decode('utf8').strip()).strip('b') In [10]: print(token) d3f4e95e05dfe34ea87217a55fb75bac 开始替换 In [3]: os.chdir('/etc/kubernetes/') In [4]: if os.path.exists('token.csv'): ...: os.remove('token.csv') In [56]: f = open('/k8s/profile/token.py','r',encoding='utf-8') In [57]: f_new = open('/etc/kubernetes/token.csv','w',encoding='utf-8') In [58]: for line in f: ...: if "TOKEN" in line: ...: line = line.replace('TOKEN',token) ...: f_new.write(line) ...: f.close() ...: f_new.close() 查看结果: cat /k8s/profile/token.py d3f4e95e05dfe34ea87217a55fb75bac,kubelet-bootstrap,10001,"system:kubelet-bootstrap" 参照文档: https://www.cnblogs.com/yujihaia/p/7468235.html https://www.cnblogs.com/hoffman-of-programe/p/8361974.html
  • 相关阅读:
    Requests发送带cookies请求
    Python3 + requests + unittest接口测试
    「完结篇」网络爬虫+实时监控+推送微信
    「爬虫」从某网站爬取数据
    定时从某网站爬取压缩包
    如何转载文章...............
    数据库连接远程服务器报错
    记录常用的Java方法
    链接服务器 不同服务器查询,插入数据
    【学习笔记】树状数组
  • 原文地址:https://www.cnblogs.com/effortsing/p/9982061.html
Copyright © 2020-2023  润新知