1 文件与IO

1.1读写文本数据

读写各种不同的文本数据,如ASCII,UTF-8,UTF-9编码等。

使用带有rt模式的open()函数读取文本文件。

例如:
with open('db', 'rt') as f:
data = f.read()
print(data)
with open('db', 'rt') as f:
for line in f:
print(line.strip('\n'))

使用带有wt的open()函数写入一个文本文件,如果之前文件内容存在则清除并覆盖掉。

例如:
with open('db', 'wt') as f:
f.write('python|python235')

如果是已存在文件中添加内容,使用at的open()函数。

操作文件时指定默认编码

with open('somefile.txt', 'rt', encoding='latin-1') as f:
... 

注意:

当使用with语句时,不需要手动关闭文件,当with控制块结束时,文件会自动关闭。不用with时,需要手动关闭。

1.2文件不存在时写入

在一个文件中写入数据,如果文件不存在写入,而不是直接覆盖原文件内容。

例如:
with open('db', 'xt') as f:
f.write('hello')
db文件存在抛出FileExistsError异常
Traceback (most recent call last):
File "C:/Users/hexm/Desktop/python/s13/day3/file01.py", line 9, in <module>
with open('db', 'xt') as f:
FileExistsError: [Errno 17] File exists: 'db' 替代方案:
import os
if not os.path.exists('db'):
with open('db', 'wt') as f:
f.write('hello\n')
else:
print('File already exists')

1.3读写二进制文件

例如:
f = open('db', 'rb')
res = f.read()
print(res, type(res)) #b'ssssssssss' <class 'bytes'>
text = res.decode('utf-8')
print(text) f = open('db', 'ab')
text = 'hello,世界'
f.write(bytes(text, encoding='utf-8'))
f.write(text.encode('utf-8')) f = open('db', 'ab')
f.write(b'Hello world.')

1.4 打印输出到文本文件

打印输出至文件中,将print()函数输出重定向到一个文件中。

例如:
with open('db', 'wt') as f:
print('python1|python279', file=f)

1.5 使用其他分隔符或行终止符打印

可以在print()函数中使用sep和end关键字。

例如:
print('xiaoming', 2, 3, 5)
print('xiaoming', 2, 3, 5, sep=',', end='!!!\n')
for x in range(10):
print(x, end=' ') #0 1 2 3 4 5 6 7 8 9

使用str.join()也可以做到,不过str.join()仅使用于字符串。

例如:
print(','.join(str(x)for x in name)) #xiaoming,2,3,5
print(*name, sep = ',') #xiaoming,2,3,5

1.6 format格式化输出

#format格式化输出
s1 = 'I am {0}, age {1}'.format('hexm', 18)
print(s1) #I am hexm, age 18
s2 = 'I am {0}, age {1}'.format(*['hexm', 18])
print(s2) #I am hexm, age 18
s3 = 'I am {name}, age {age}'.format(name='hexm', age=18)
print(s3) #I am hexm, age 18
s4 = 'I am {name}, age {age}'.format(**{'name': 'hexm', 'age': 18})
print(s4) #I am hexm, age 18
监控文件尾部,并打印
#!/usr/bin/env python
# coding=utf-8 import time def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line if __name__ == '__main__':
logfile = open('/tmp/access.log', 'r')
loglines = follow(logfile)
for line in loglines:
print(line.strip())
监控文件尾部,并打印,退出后从退出位置监控
#!/usr/bin/env python
# coding=utf-8
import time
import os
def follow(seek_bytes, file):
seek_bytes = int(seek_bytes)
file.seek(seek_bytes) # 跳到位置信息
while True:
line = file.readline()
if not line:
time.sleep(0.1)
continue
else:
# 保存位置信息
with open('/tmp/linenumber.log', 'w+') as f:
f.write(str(file.tell()))
yield line
if __name__ == '__main__':
logfile = open('/tmp/access.log', 'r')
# 如果位置文件存在,打开并读取
if os.path.exists('/tmp/seek_bytes.log'):
with open('/tmp/seek_bytes.log', 'r') as f:
seek_bytes = f.readline().strip()
# 位置设置为0
else:
seek_bytes = ''
# 将位置信息和文件对象传给follow函数
loglines = follow(seek_bytes, logfile)
for line in loglines:
print(line.strip())
												

python文件操作及格式化输出的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  3. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  4. Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  5. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  6. Python小代码_2_格式化输出

    Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...

  7. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  8. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  9. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

随机推荐

  1. Web网络服务介绍

    Web网络服务也叫WWW(World Wide Web),一般是指能够让用户通过浏览器访问到互联网中文档资源服务.目前提供WEB网络服务的程序有Apache .Nginx 和  IIS  等等,Web ...

  2. Alpha冲刺——day5

    Alpha冲刺--day5 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...

  3. final 140字评论II

    1.约跑app: 从性能上讲,着重修改了其他组找出的bug,性能上有了很大的提高,增强了实用性. 从功能上讲,该app可以增加用户之间的互动性,有较多的客户群,适合人群不限于青少年和成年人. 从UI上 ...

  4. Linux命令(一) pwd ,cd

    1.pwd命令 以绝对路径的方式显示当前所处的工作目录,从根目录 / 开始,每一级目录用 / 分隔.第一个 / 表示根目录,最后一个目录是当前目录.当不知道当前处于哪个目录的时候,使用 pwd 命令就 ...

  5. Jenkins配置匿名用户拥有只读权限

    场景:查看cucumber reporting测试报告时需要登陆,比较麻烦 解决:允许匿名用户拥有只读权限 操作:Jenkins->系统管理->全局安全配置->授权策略,勾选“All ...

  6. java 方法的返回类型

    定义了返回值类型后 必须要执行 return 因为 当一个变量初始化时候 需要有数据 如果方法体里面没有返回数据类型时 这个变量是没有数据的 会报错 所以必须要返回一个数据 当一个方法体里面有 if ...

  7. 阿里Java编码规范

    详细,全面 很不错 阿里 Java编码规范

  8. 【设计模式】—— 模板方法Template

    前言:[模式总览]——————————by xingoo 模式意图 定义一个类的框架,当它有不同的类时,再具体实现. 比如,我们设计一个跨系统的客户端软件,Windows需要一套展现类,Linux需要 ...

  9. The writing on the wall 南京网络赛2018B题

    样例输入复制 2 3 3 0 3 3 1 2 2 样例输出复制 Case #1: 36 Case #2: 20 题目来源 ACM-ICPC 2018 南京赛区网络预赛 题意: 就是求图中去掉涂黑的方格 ...

  10. HGOI20180904(NOIP2018模拟sxn出题)

    sol 输入n和H表示n个人,选H个人gcd最大抓住排列,是x[1,n]的正整数,是连续的整数,假设现在最大的公因数是k其中k一定是在[1,n]那么在排列中最多出现的个数为w那么kw是最大的含有因数k ...