ctrl + s 保存至磁盘

.exe  .txt   .ppt  .jpg  文件格式

open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写

open(filename,mode)

filename:包含了你要访问的文件名称的字符串值。

mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

模式rr+ww+aa+

+

+

+

+

+

+

+

+

+

创建

+

+

+

+

覆盖

+

+

指针在开始

+

+

+

+

指针在结尾

+

+

当前文件路径  /Users/magick/python

文件名  mo.txt

文件内容

1 one

2 two

>>> f=open(r'/Users/magick/python/mo.txt','r')

>>> f

>>> list(f)

['1 one\n', '2 two']

f.close()  关闭文件(关闭时缓存文件内容)

为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。

size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.read())

执行结果

1 one

2 two

f.readline() 会从文件中读取(当前)的一行。换行符为 '\n'

f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.readline ())

执行结果

1 one

f.readlines() 将返回该文件中包含的所有行。

如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

f=open(r'/Users/magick/python/mo.txt','r')

print(f.readlines ())

执行结果

['1 one\n', '2 two']

迭代一个文件对象然后读取每行

f=open(r'/Users/magick/python/mo.txt','r')

for l in f:

print(l,end='')

执行结果

1 one

2 two

f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

f=open(r'/Users/magick/python/mo.txt','w')    #w为写入(覆盖)

num = f.write("5")    #用字符串'5'覆盖原文件,字符数为num=1

print(num)      1

f.close()

如果要写入一些不是字符串的东西, 那么将需要先进行转换:

f=open(r'/Users/magick/python/mo.txt','w')

num = (2,"a")

n=str(num)

f.write(n)

$ cat mo.txt

(2, 'a')

f.name  查找文件所在系统位置(文件名)

>>> f.name

'/Users/magick/python/mo.txt'

如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。

from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符

seek(x,1) : 表示从当前位置往后移动x个字符

seek(-x,2):表示从文件的结尾往前移动x个字符

f.tell() 返回文件对象当前所处的(指针)位置, 它是从文件开头开始算起的字节数。

f.read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。

>>> f=open(r'/Users/magick/python/mo.txt','rb+')

>>> f.write(b'1234567890')

10

>>> f.seek(5)      移动到第六个

5          第6个(从0开始)

>>> f.read(1)     读取第一个数字

b'6'

>>> f.tell()      显示当前(指针)位置

6

>>> f.seek(-2,2)   移动到倒数第二个

8          第9个(从0开始)

>>> f.read(1)     读取第一个数字

b'9'

>>> f.tell()         当前(指针)位置

9

>> f.seek(0,0)    返回最初的位置

>>for e in f:      迭代f的全部内容

print(e)

python文件写入也可以进行网站爬虫

以下代码是打开project.txt文件,并向里面写入http://www.baidu.com网站代码

fromurllib importrequest

response =request.urlopen("http://www.baidu.com/")# 打开网站

fi=open("project.txt",'w')# open一个txt文件

page =fi.write(str(response.read()))# 网站代码写入

fi.close()# 关闭txt文件

input() 默认输入的为 str 格式,若用数学计算,则需要转换格式,例:

a=input('请输入数字:')print(a*2)

假设输入数值为3,则上例中得出结果为:

33

若将代码修改为:

a=int(input('请输入数字:'))print(a*2)

则结果为:

6

实践

文件内容

1:1213

2:121321

1:1323

-----

1:22324

2:2232341

1:2242415

-----

1:321515

2:321515

1:315253

文件名record.txt

1:开头的单独保存为boy_*.txt

2:开头的单独保存为girl_*.txt

不同段落(-----)分割

三段分别保存为

boy_1.txt , boy_2.txt , boy_3.txt

girl_1.txt , girl_2.txt , girl_3.txt

defsave_file (boy,girl,count):#保存

f_name_boy = 'boy_'+ str(count) + '.txt' #定义名字,用名字提示第几次分割

f_name_girl = 'girl_'+ str(count) + '.txt'boy_file= open(f_name_boy,'w') #用定义的名字创建文件

girl_file = open (f_name_girl,'w')

boy_file.writelines(boy)#把boy的内容写入文件中

girl_file.writelines(girl)

boy_file.close()#关闭文件

girl_file.close()defsplit_file(file_name):#分割

f= open('record.txt')

boy=[]

girl=[]

count= 1

for e inf:if e[:5] != '-----':

(role,l)=e.split(':',1) #e.split(':',1) :的左右分割,左role,右l

if role == '1':

boy.append(l)#写入boy,此时boy为列表

if role == '2':

girl.append(l)#写入girl列表

else:

save_file(boy,girl,count)#此时迭代至分割线,把上一轮的列表数保存

boy=[] #带入保存函数,清空列表

girl=[]

count+= 1 #进入下一次分割

save_file(boy,girl,count)#跳出迭代,保存最后一组数据

f.close()#关闭文件

split_file('record.txt')

整体思路:

准备两个列表

迭代文件

没有遇到分割线时

:左右分割,符号条件的放到对应列表中

遇到分割线时保存列表数据至文件,回到迭代判断处,准备下一次

保存文件可使用函数dfl

用名字提示第几次分割

创建文件

把数据写入文件中

关闭文件

所以要接收数据,第几次分割

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py

模块可以被别的程序引入,以使用该模块中的函数等功能(标准库)

有os模块,不用关心操作系统下使用什么模块

os模块会自动选择正确的模块并调用

>>import os  #引用os模块

>>os.getcwd()  #当前工作目录

'/Users/magick/python'

>>> os.chdir('/Users/magick')  #修改工作目录,移动

>>> os.getcwd()

'/Users/magick'

>>> os.listdir()    #列举当前目录的文件

['Music', '.DS_Store', '.CFUserTextEncoding', '.idm', 'python', 'Pictures', 'Desktop', 'Library', '.bash_sessions', '.mplayer', 'PycharmProjects', 'Public', '.dropbox', 'Python 3.7', '.idlerc', 'Movies', 'Applications', 'Dropbox', '.Trash', 'Documents', '.bash_profile', 'Downloads', '.bash_history', '.viminfo']

>>> os.mkdir('/Users/magick/a')    #创建单层目录(文件)

>>> os.mkdir('/Users/magick/a/b')    #a存在的情况下创建b

>>> os.mkdir('/Users/magick/c/b')    #不存在c,所以不能在c中创建b,报错

>>> os.mkedirs('/Users/magick/a/b')    #递归创建多层目录,需要包含子目录

>>> os.rmdir('/Users/magick/a/b')    #删除路径目录,仅当这个文件夹是空的才行

>>> os.mkdir('/Users/magick/python/a/a')

>>> os.mkdir('/Users/magick/python/a/a/a')

>>> os.mkdir('/Users/magick/python/a/a/a/a')

>>> os.removedirs('/Users/magick/python/a/a/a/a')  #递归删除目录如果子文件夹成功删除尝试它们的父文件夹

>>> os.listdir()

['c', 'b']

>>> os.listdir()

['.DS_Store', 'c', 'b']

>>> os.unlink('.DS_Store')    #删除文件,如果文件是一个目录则返回一个错误

>>> os.listdir()

['c', 'b']

>>> os.listdir()

['c', 'b']

>>> os.rename('c','a')    #命名(修改)文件或目录

>>> os.listdir()

['a', 'b']

os.curdir    指代当前目录

os.pardir    指代上一级目录

os.path 模块

import os  引用os模块时就已经引用了os.path

>>os.path.basename('/Users/magick/a.txt')    #去掉目录路径,单独返回文件名

a.txt

>>>>os.path.basename('/Users/magick/a.txt')    #去掉文件名,单独返回目录路径

/Users/magick

>>os.path.join('c:\\','a','b')      #各部分组合成一个路径名

c:a\\b

>>os.path.split('c:\\a\\b.txt')    #分割文件名与路径

('c:\\a','b.txt')

>>os.path.splitext('c:\\a\\b.txt')    #分离文件名与扩展名

('c:\\a\\b','txt')

os.getatime  返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

import time

os.path.getatime('c:\\a\\b.txt')      返回浮点型秒数

time.gmtime(os.path.getatime('c:\\a\\b.txt'))    返回日期

os.getctime(file)  返回指定文件的创建时间

os.getmtime(file)  返回指定文件最新的修改时间

python61到08使用说明书_python 08 文件操作相关推荐

  1. python简述文件的操作步骤_Python之文件操作

    一.文件操作步骤 1.有个文件 2.打开文件 3.操作文件:读.写 4.关闭文件 f=open('users.txt','a+') #打开文件 f.flush() f.seek(0)#指针从头开始 p ...

  2. 属于python文件的操作有_Python的文件操作

    1.初始文件操作 1.使用python读写文件使用open()函数获取文件句柄,就可以操作文件了,根据打开方式不同能执行的操作也不同. 打开方式有: r.w.a.r+.w+.a+.rb.wb.ab.r ...

  3. python文件读取与输出_python基本文件操作(文件输入和输出)

    文件输入输出中常用的文件对象方法: open: 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作 readline: 读取一行数据包括结尾的换行符在内 write: 将数据写入文件中 c ...

  4. python新建文件格式_python之文件操作

    @ 打开\创建文件 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,默认在当前程序所在文件夹下创建新文件. 格式:open(文件名,访问模式),例如 f = open ...

  5. c++读二进制文件结束的时候总会异常_python专题文件操作

    一 前言 本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错. 公众 ...

  6. python文件式_python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  7. python实现文件管理系统_Python使用文件操作实现一个XX信息管理系统的示例

    大家好,我是第一次python学了一个学期,期末要完成一个毕业生信息管理系统大作业的小韩了,由于上次没有仔细看开发实现的要求,实现了一个简单的毕业生信息管理系统,而这次专门整理了两种使用文件进行保存数 ...

  8. python如何使用文件_Python的文件操作

    文件的操作,归根结底就只有两种:打开文件.操作文件 一.打开文件:文件句柄= open('文件路径','模式') python中打开文件有两种方式,即:open(...) 和  file(...),本 ...

  9. python基础文档_python基本文件操作

    python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...

最新文章

  1. Eclipse JDBC SQLServer2008 R2
  2. python小乌龟行走轨迹_旋转傻乌龟——几何变换实践|python爬虫|python入门|python教程...
  3. mysql Navcat触发器生成订单号
  4. Eclipse不能导入工作区项目的解决和win10下JDK的path环境变量
  5. 手持终端可以根据行业的功能要求进行定制
  6. Log4j CVE-2021-44228后续-CVE-2021-45046,CVE-2021-45105
  7. 外网访问内网Tornado
  8. 战神CPU计算机硬件组装
  9. 阿里矢量库(各种图标搜索功能)
  10. 【新手上路常见问答】关于物联网设计
  11. 区块链:POA委员会选举机制
  12. 互联网定律及效应汇编
  13. Windows 系统添加 VirtIO 驱动(Windows ISO 安装镜像添加驱动)
  14. 网易云信 NIM_duilib 源码分析
  15. Windows - win11取消鼠标右键菜单折叠的方法
  16. 概率密度函数,参数估计,非参数估计
  17. ios 与 安卓 移动端浏览器兼容笔记
  18. 【高通SIM卡】 单双卡NV配置
  19. AB 测试平台的设计与实现
  20. 2022年熔化焊接与热切割考试模拟100题及答案

热门文章

  1. Android权限Uri.parse总结
  2. 解决“添加删除程序”里面隐藏问题
  3. python 导航栏_解析导航栏的url--selnium,beautifulsoup实战
  4. drcom linux怎么运行,linux下使用drcom登录认证
  5. [转载] JAVA基础----java中E,T,?的区别?
  6. [转载] 常用应届生Java开发笔试面试题(更新中)
  7. Java Collections unmodifiableCollection()方法与示例
  8. stl字符串去除空格_在列表中推送字符并在C ++ STL中将它们打印为空格
  9. php面试php数组变ahp,关于PHP字符串的一道面试题
  10. 项目如何用jetty运行_如何用Cloudbase Framework部署一个Vue项目?