zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    存储:块存储/文件存储/对象存储
    系统调用system call以及strace/dtruss
    JBoss EAP应用服务器部署方法和JBoss 开发JMS消息服务小例子
    在IE中,JS方法名和input的name重名时,调用该方法无效
    html 使表格随着内容自动适应宽度
    Jboss 安全和优化
    java网页数据抓取实例
    Eclipse+Weblogic 12开发简单的Enterprise Application
    eclipse中整合ejb和web工程
    破解 jar 包之直接修改 .class 文件方式
  • 原文地址:https://www.cnblogs.com/effortsing/p/9982061.html
Copyright © 2011-2022 走看看