python路6__code,fileoperator

1,文件编码

python默认编码,python2默认为ascii,python3默认为utf-8所以说,python3默认支持中文。

>>> import sys
>>> sys.getdefaultencoding()  #显示python默认编码
‘utf-8‘2,

2,文件操作通过指针的移动在读取文件,文件打开,指针指向文件开头,文件读完,指针指向文件末尾,指针不会自动回到文件开头,所以说,文件只能读一遍,如果想想再一次从头读取文件,就需要手动将指针指向文件开头(1)只读

>>> f = open(‘1.txt‘,‘r‘)
>>> data = f.read()
>>> data2 = f.read()        #疑问:data2有数据吗?
>>> f.close()
>>> print (data)
1
2
3
4
5
6
7
8
9
人民的民义

>>> print (data2)        #data2为空

>>>

(2)只写,如果文件已存在,就覆盖

>>> f = open(‘1.txt‘,‘w‘)
>>> f.write(‘洞房花烛夜\n‘)
6
>>> f.write(‘进班题名时\n‘)
6
>>> f.close()
>>>

(3)追加,只能在文件末尾追加,不能读

>>>
>>> f = open(‘1.txt‘,‘a‘)
>>> f.write(‘洞房花烛夜\n‘)
6
>>> f.write(‘进班题名时\n‘)
6
>>> f.close()
>>>

(4)文件的方法f.readline():每次读取文件的一行内容

r+ 读写,可读可追加

w+  写读,先创建一个文件,在写入(没太多用)

a+   追加读

rb   二进制格式读取文件,没有encoding参数,使用场景:pyython3中网络传输只能用二进制,视频文件都是二进制的

wb   二进制格式写,f.write(‘hello binary\n‘.encode())  写时需要str--->bytes,装换

比如:vim 是将文件先全部加载到内存,再进行修改,所以vim读取大文件时要等很久,修改完后再写入硬盘
这种情况下不需要创建新的文件,所以vim适合读小文件

(5) with:为了避免打开文件爱你后忘记关闭,可以通过管理上下文,当with代码臧星完后,内部自动关闭文件释放资源

#打开一个文件
>>> with open(‘1.txt‘,‘r‘) as f1:
...     for line in f1:
...             print (line)
...
源于纯净

归于健康
#同时打开多个文件
>>> with open(‘1.txt‘,‘r‘) as f1,...     open(‘2.txt‘,‘r‘) as f2:
...             for line in f1:
...                     print (line)
...             for line in f2:
...                     print (line)
...
源于纯净

归于健康
a

b

c

d

e

f

g

>>>

(6)实例:不打印文件第三行i:这个方法比较low,f.readlines():把文件的每一行作为一个元素,全部存入一个列表,这个readlines方法一次性把文件全部读入到内存中,只适合小文件

f = open(‘1.txt‘,‘r‘)
for index,line in enumerate(f.readlines()):
    if index == 2:
        print (‘--------我是分割线---------‘)
        continue
    print (index,line.strip())
f.close()
运行结果:

[email protected]:/python_shell# python3 code_fileoperator.py

0 洞房花烛夜

1 进班题名时

--------我是分割线---------

3 进班题名时

ii:推荐使用这个方法,占用内存少,高效
f = open(‘1.txt‘,‘r‘)
Count = 1
for line in f:    #此时,f是一个迭代器,文件一行一行的读入内存,内存中同时载入文件中的一
        #行,读取下一行到内存是,覆盖上一行
    if Count ==3:
        print (‘----------我是分割线-----------‘)
        Count +=1
        continue
    print (line.strip())
    Count +=1
f.close()
执行结果:

[email protected]:/python_shell# python3 code_fileoperator.py

洞房花烛夜

进班题名时

----------我是分割线-----------

进班题名时

 


				
时间: 2024-07-31 04:45:41

python路6__code,fileoperator的相关文章

python 路 05

一·,三引号不光是多行注释,也是多行打印. 集成开发环境(IDE,Intgrated Development Enviroment) 1.VIM(linux 下的文本编辑器) 2.Emacs (Linux 下文本编辑器) 3.Eclipse(java IDE,支持python,c++,等)4,Visual Studio (微软的IDE) 5.Notepad++,或者 subline python 开发的. pycharm 主要用于python 开发的 二,格式化输出: 占位符  %s strin

python路1---variable

#!/usr/bin/python3 #使用哪个python解释器运行该脚本 #python3默认编码为unicode,支持中文 name = '侯亮平' print (name) #用户输入函数input() import getpass Username = input('Username:') Passwd = input('Passwd:') Passwd_get = getpass.getpass('Passwd:') #密码隐式输入 print (type(Username),typ

Python 路谱

20160214--->20160824 一口气爬过高山 Happy Valentine's Day 新闻: 201602-1引力波 引力波数据居然是用 Python 分析的 http://www.techug.com/gwpy-ligo-analyze 相关Python包:GWPY 基础--->模块---框架 Web框架: Python和Flask真是太强大了 http://python.jobbole.com/81065/ 1.Django 官网:https://www.djangopro

python路5__购物车小程序练习

1,购物车小程序 需求: (1),启动程序后,打印全部商品列表,用户输入工资 (2),许用户根据商品编号购买商品 (3),用户购买商品,余额不足就退出程序,并打印信息 (4),可随时退出,退出时,打印已购买商品和余额 2,流程图 3,代码 #!/usr/bin/python3 Product_list = [ ('Doido钻戒 ',8000), ('ROLEX手表',20000), ('HuaWei P10',4000), ('AppleWatch',2000), ('Ipad',1000),

python路4—字典、集合

#!/usr/bin/python3 #字典---增删改查 #穿件一个字典info >>> info = { ... 'student01':'TenLan Wu', ... 'student02':'LongZe Luola', ... 'student03':'XiaoZe Maliya' ... ... } #字典查询 >>> info {'student03': 'XiaoZe Maliya', 'student01': 'TenLan Wu', 'studen

学习python路途中....

有关class类中的属性和方法 def __init__(self, 变量):  这个类定义为某个对象时会自动调用的方法 def __call__(self, 变量):  这个是把类的方法直接当函数来调用了  ,一般是 对象.方法() 调用   ,这个为对象()  调用 def __str__(self, 变量):   这个是对象直接被打印 默认调用的一个方法  一般是 print(对象)  来使用 def __getattr__(self, 变量):   这个是对象调用其属性时,存在即调用,不

python路--字典

字典 不可变类型:整型,字符,元组       键--不可变类型 可变类型:列表,字典 字典两大特点:数据无序,键唯一 创建 dic={'hobby':{'girl_name':'铁锤','age':45}, } 值可为字典 增 dic['name']='alex' dic.update(dic2) 删 dic.pop('age') dic.clear() del dic del dic['name'] 查 print( list(dic.keys())   )   打印出所有的键 , 一个列表

python路-字符

字符                       if  age.isdigit():        #字符串age是数字"12" age = int(age) else: exit() #退出程序 exit("现在我退出了") 截取 print('helloworld'[2:]) 属于  print('el' in 'hello') 格式化   %s   %d     %f msg = '''name =%s,age =%s'''%(name,age) 连接 d2

Pycharm学习python路

import 模块之后是灰色的表明没有被引用过 lxml找不到的话用anaconda prompt :pip uninstall lxml 重新安装 用request时,写的reg无法正确解析网页,先print然后再写reg pyquery 的attr()获取不到值,因为只获取第一个值,具体参照https://www.cnblogs.com/airnew/p/10056551.html 访问节点属性:使用attr()方法访问节点的属性: from pyquery import PyQuery a