python-文件操作(1)
本文内容涉及python打开/创建文件对象,文件的读写、文件指针位置的移动、获取命令行参数。
1. open()
open函数以指定模式返回一个file对象,如: file_object = open(filename,access_mode=’r’,buffering=-1),默认是以r模式打开文件。
filename:表示要打开文件名(字符串),可以是绝对路径或相对路径
access_mode:文件打开的模式(字符串), 常用的模式有’r’,’w’,’a’,不是很常用的还有’u’和’b’
‘r’模式:以读方式打开,不能进行写操作,文件必须是已经存在的
‘r+’模式:以读写方式打开,文件必须是已经存在的
‘w’模式:以写方式打开,不能进行读操作,若文件存在,则先清空,然后重新创建;若不存在,则创建文件
‘w+’模式:以读写方式打开,若文件存在,则先清空,然后重新创建;若不存在,则创建文件
‘a’模式:以追加方式打开,不能进行读操作,把数据追加到文件的末尾;若不存在,则创建文件
‘a+’模式:以读写方式打开,把数据追加到文件的末尾;若不存在,则创建文件
‘b’模式:以二进制模式打开,不能作为第一个字符出现,需跟以上模式组合使用,如’rb’,’rb+’等,
‘u’模式:表示通用换行符支持,文件必须是已经存在的buffering:表示访问文件采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,其他大于1的值表示使用给定值作为缓冲区大小,负数表示使用系统默认缓冲机制,默认是-1,一般使用系统默认方式。
2. file()
file是一个类,file()以指定模式创建一个file对象,跟open()具有相同的功能,可以任意替换。一般使用open来创建一个file对象,使用isinstance(obj,file)来判断obj是否是一个文件对象。
3.read()、readline()、readlines()
read():读取指定数目个字节到字符串中,负数将读取至文件末尾,默认是-1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
>>> file_obj = open('test.txt','r')>>> file_obj.read()'dfdff\n'>>> file_obj.seek(0)>>> file_obj.read(0)''>>> file_obj.read(1)'d'>>> file_obj.read(2)'fd'>>> file_obj.read(-1)'ff\n'>>> file_obj.seek(0)>>> file_obj.read(1000)'dfdff\n'>>> file_obj.seek(0)>>> file_obj.read(-5)'dfdff\n' |
readline():读取文件的一行,包括行结束符,可以制定size参数的值,默认是-1
|
1
2
3
4
5
6
7
|
>>> file_obj = open('test.txt','r')>>> file_obj.readline()'dfdff\n'>>> file_obj.readline(2)'al'>>> file_obj.readline(-1)'exzhou\n' |
readlines():读取所有剩余的行,然后作为一个字符串列表返回
|
1
2
3
|
>>> file_obj.seek(0)>>> file_obj.readlines()['dfdff\n', 'alexzhou\n', 'zhoujianghai\n'] |
4. write()、writelines()
ps:这两个方法都不会自动加上行结束符,需在写入数据前自己加上
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
>>> file_obj = open('test.txt','w+')>>> file_obj.write('alexzhou')>>> file_obj.write(' python')>>> file_obj.seek(0)>>> file_obj.readline()'alexzhou python'>>> l = ['my','name','is','zhoujianghai']>>> l = ' '.join(l)>>> file_obj.writelines(l)>>> file_obj.seek(0)>>> file_obj.readline()'alexzhou pythonmy name is zhoujianghai'>>> file_obj.write('hello \n')>>> file_obj.write('world \n')>>> file_obj.seek(0)>>> file_obj.readline()'alexzhou pythonmy name is zhoujianghaihello \n'>>> file_obj.readline()'world \n' |
5. seek()、tell()
seek():移动文件指针到不同的位置,可以指定偏移量和起始位置。起始位置0表示从文件头开始,1表示从当前位置开始,2表示从文件尾开始,默认是0.
tell():表示当前文件指针在文件中的位置,从文件头算起。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> file_obj.seek(0)>>> file_obj.tell()0>>> file_obj.seek(5)>>> file_obj.tell()5>>> file_obj.seek(5,1)>>> file_obj.tell()10>>> file_obj.seek(5,2)>>> file_obj.tell()57>>> file_obj.seek(5,0)>>> file_obj.tell()5 |
6. 文件迭代和关闭文件
可以使用for循环一行一行读取文件
|
1
2
3
4
5
6
7
8
9
10
|
>>> file_obj = open('test.txt','w+')>>> file_obj.write('hello \n')>>> file_obj.write('world \n')>>> file_obj.seek(0)>>> for eachline in file_obj:... print eachline,... hello world>>> file_obj.close() |
ps:print后面加一个分号的作用:避免print语句默认在打印的内容后面加一个换行符号。
7. os模块常用属性
由于各操作系统的行分隔符和文件分隔符不一样,所以可以使用os模块的以下属性避免代码移植时碰到这些问题。
os.linesep 行分隔符字符串
os.sep 文件分隔符字符串
os.pathsep 路径分隔符字符串
os.curdir 当前目录字符串
os.pardir 父目录字符串
看下面的打印结果
|
1
2
3
4
5
6
7
8
9
10
11
|
>>> import os>>> os.sep'/'>>> os.linesep'\n'>>> os.pathsep':'>>> os.curdir'.'>>> os.pardir'..' |
8. 获取命令行参数
创建argv.py文件,输入下面代码
|
1
2
3
4
|
import syscommands = sys.argvprint commands |
执行:pyton argv.py 123,打印结果:
[‘argv.py’, ‘123’]
python-文件操作(1)的更多相关文章
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- python 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- 关于Xcode7的HTTP请求不到网络的问题
---恢复内容开始--- Xcode7发现网络请求失败, 其他一切都可以, 有网就是提示没有网络, 请求不到, 查询得知 iOS9引入了新特性 APP Transport Security (ATS: ...
- hdu2937
题目大意: 给出n求sn,中括号代表向下取整. 为了方便表述,我们令a = (3k+6)!,b = (3k+7),令c = (a+1)/b也就是式子中的前半部分,d = a/b也就是式子中的后半部分. ...
- 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。
今天我在使用ef的时候,发现了这样的报错. 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 <ModificationFunctionMa ...
- jquery1.9学习笔记 之选择器(基本元素三)
标签选择器("element") 描述: 选择所有与给出标签名相匹配的元素. 同功能的JS原生方法:getElementByTagName() 例子: 查找每个div元素. &l ...
- Flask学习记录之Flask-Admin
相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户.文件增删改查等常用功能:也可 ...
- JavaScript 系列笔记(一)数据类型
关于JS的数据类型 简单类型有五种:Undifined, Null, Boolean, Number, String 复杂类型有一种:Object 通过typeof 操作符来获取数据类型,此操作符返回 ...
- iOS 编译64位FFMPEG
最近因为公司项目需要捣腾FFMPEG,所以看了一下资料,现在编译成功了,记录一下. 我自己发现大概有两种方式 二者共同部分 安装装yasm或者(MAcport,我用的是yasm,这里只记录yasm的) ...
- android 中View, Window, Activity, WindowManager,ViewRoot几者之间的关系
(1)View:最基本的UI组件,表示屏幕上的一个矩形区域. (2)Window: 表示一个窗口,不一定有屏幕那么大,可以很大也可以很小: 它包含一个V ...
- PYTHON线程知识再研习F---队列同步Queue
让我们考虑更复杂的一种场景:产品是各不相同的.这时只记录一个数量就不够了,还需要记录每个产品的细节.很容易想到需要用一个容器将这些产品记录下来. Python的Queue模块中提供了同步的.线程安全的 ...
- JS打印、预览(IE,Chrome)
IE下: 调用IE内置打印组件完成web打印方案.IE调用ActiveX实现打印. 重点: 注意: 1.CSS对打印的控制: .Noprint{display:none;} .PageNext{pag ...