• python IO编程


      1 #IO.py
      2 import sys, os
      3 #f=open('/python_workspace/IO/readme', 'r')
      4 
      5 #print(f)
      6 #sys.exit()
      7 #print(f.read())
      8 
      9 #print(os.system('dir'))
     10 
     11 '''
     12 f1=open('hello', 'a+')
     13 f1.write('hello mofei004
    ')
     14 f1.close()
     15 f1=open('hello', 'r')
     16 print(f1.read())
     17 
     18 
     19 with open('/python_workspace/IO/readme', 'r') as f:
     20     print(f.readlines())#读取多行,并以list的形式返回
     21 #    print(f.readline())#读取单行
     22 #    print(f.read(3))#会影响当前文档指针,返回时并不复位
     23 #    print(f.read())
     24 #文件已经关闭了
     25 #print(f.read())
     26 
     27 #打印文档中的每一行
     28 with open('/python_workspace/IO/readme', 'r') as f:
     29     print(f.read())
     30     for line in f.readlines():
     31         print(line.strip())#strip()不输出
    
     32 
     33 #包含非法字符时,会有UnicodeDecodeError,下面这种方式忽略了非法字符
     34 f=open('/python_workspace/wrong.txt', 'a', encoding='gbk', errors='ignore')
     35 
     36 
     37 with open('/python_workspace/IO/readme', 'a+') as f:
     38     f.write('good day
    ')
     39 
     40 #字符串前的r,防止字符串前的转义字符
     41 fpath = r'C:Windowssystem.ini'
     42 '''
     43 #########
     44 # StringIO:内存中的字符串读写
     45 #########
     46 '''
     47 from io import StringIO
     48 #f = StringIO()
     49 
     50 #print(f.write('hello'))
     51 #print(f.getvalue())
     52 
     53 f=StringIO('Hello!
    Hi!
    Goodbye!')
     54 while True:
     55     s=f.readline()
     56     if s== '':
     57         break;
     58     print(s.strip())#strip()不输出
    
     59 
     60 #########
     61 #BytesIO:内存中操作二进制数据
     62 #########
     63 from io import BytesIO
     64 f1 = BytesIO()
     65 f1.write('中文'.encode('utf-8'))
     66 print(f1.getvalue())
     67 
     68 f2 = BytesIO(b'xe4xb8xadxe6x96x87')
     69 print(f2.read())
     70 
     71 #########
     72 #操作文件及目录
     73 #########
     74 #print(os.name)
     75 #print(os.uname())#Linux系统才支持这么命令
     76 #print(os.environ())
     77 #os中的某些函数是和操作系统相关的
     78 #print(help(os))
     79 print(os.path.abspath('.'))
     80 s = os.path.abspath('.')
     81 p = os.path.join(s, 'testdir')
     82 print(p)
     83 #即可判断路径,也可判断文件,本质是一样的
     84 if not os.path.exists(p):
     85     os.mkdir(p)
     86 os.rmdir(p)
     87 '''
     88 #判断文件的读下权限
     89 #os.access(path, mode)
     90 '''
     91 os.F_OK: 检查文件是否存在;
     92 os.R_OK: 检查文件是否可读;
     93 os.W_OK: 检查文件是否可以写入;
     94 os.X_OK: 检查文件是否可以执行
     95 '''
     96 
     97 #也可用try和pathlib模块来判断路径是否存在
     98 '''
     99 os.path.join()#合并两个路径
    100 os.path.split()#拆分路径为两个部分,后一部分总是最后级别的目录或文件名:
    101 '''
    102 '''
    103 print(os.path.split(s))
    104 print(os.path.splitext(s+'IO.py'))
    105 
    106 #os.mknod('test.txt')
    107 with open('test.txt', 'w+') as f:
    108     pass
    109 os.rename('test.txt', 'test.py')
    110 os.remove('test.py')
    111 
    112 #import shutil
    113 #copyfile()可以复制文件
    114 os.listdir('.')
    115 
    116 #筛选出当前目录下存在的文件夹
    117 print([x for x in os.listdir('.') if os.path.isdir(x)])
    118 
    119 #筛选出当前目录下.py文件
    120 print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'])
    121 '''
    122 ###########
    123 #序列化
    124 ###########
    125 '''
    126 import pickle
    127 d = dict(name='Bob', age=20, score=88)
    128 #以二进制打印d的内容
    129 print(pickle.dumps(d))
    130 
    131 f = open('dump.txt', 'wb')
    132 #把d二进制存储于文件中
    133 pickle.dump(d, f)
    134 f.close()
    135 
    136 f = open('dump.txt', 'rb')
    137 #从文件中读出二进制内容
    138 d = pickle.load(f)
    139 f.close()
    140 print(d)
    141 '''
    142 '''
    143 JSON类型    Python类型
    144 {}            dict
    145 []            list
    146 "string"    str
    147 1234.56        int或float
    148 true/false    True/False
    149 null        None
    150 '''
    151 import json
    152 d=dict(name='Bob', age=20, score=88)
    153 
    154 #序列化为Json
    155 with open('/python_workspace/IO/json', 'w+') as f:
    156     f.write(json.dumps(d))
    157 
    158 #反序列化Json
    159 json_str = '{"age": 20, "score": 88, "name": "Bob"}'
    160 print(json.loads(json_str))
    161 
    162 
    163 #序列化一个类对象
    164 class Student(object):
    165     def __init__(self, name, age, score):
    166         self.name = name
    167         self.age = age
    168         self.score = score
    169 
    170 def student2dict(std):
    171     return {
    172     'name':std.name,
    173     'age':std.age,
    174     'score':std.score
    175     }
    176 s=Student('Bob', 20, 88)
    177 #通过student2dict把Student对象装换为dict
    178 print(json.dumps(s, default=student2dict))
    179 #通常class的实例都有一个__dict__属性,就是一个dict,用来存储实例的变量
    180 print(json.dumps(s, default=lambda obj: obj.__dict__))
    181 
    182 #反序列化为类对象
    183 def dict2student(d):
    184     return Student(d['name'], d['age'], d['score'])
    185 json_str='{"age":20,"score":88, "name":"mofei004"}'
    186 print(json.loads(json_str, object_hook=dict2student))
    187 
    188 
    189 obj = dict(name='小明', age=20)
    190 #ensure_ascii确保输出的数据均为ascii码
    191 s = json.dumps(obj, ensure_ascii=True)
    192 print(s)
  • 相关阅读:
    Markdown文档示例
    Python网络编程(一)
    JS之客户端检测
    MySQL 多表查询
    MySQL 单表查询
    MySQL 入门
    Python内置方法大全
    010 盒模型
    009 CSS选择器
    008 常用样式
  • 原文地址:https://www.cnblogs.com/mofei004/p/9431261.html
Copyright © 2020-2023  润新知