python61到08使用说明书_python 08 文件操作

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)  返回指定文件最新的修改时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

RCNN这个网络也是目标检测的鼻祖了。其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式。在RCNN中,不再对所有的滑动窗口跑算法,而是只选择一些…

c语言字符串定界符,关于c ++:按字符分割字符串

我知道这是一个非常简单的问题,但我只想一次为自己解决我只想使用字符作为分割定界符将字符串分割成数组。 (很像C#著名的.Split()函数。我当然可以应用蛮力方法,但是我想知道是否有什么更好的方法了。)到目前为止,我已经搜索过&a…

vue 组件不受全局样式影响_组件库引入全局样式lib/style/index.css,会污染全局基础样式...

I have searched the issues of this repository and believe that this is not a duplicate.Version1.3.14Environmentmacos 10.14.6,chrome76.0.3809.100(正式版本),vue 2.6Reproduction linkSteps to reproduce在chrome extension 插件开发中使用ant-…

ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11

前面发了几个求助的帖子,希望有朋友能提供些Factory Talk View V11的安装和授权,但是一直没有什么回复,今天结合别人的经验,算是把授权安装搞定了,在这里发布出来,希望能帮助到更多的朋友,授权和…

c++ udp多线程 例子_[内附完整源码和文档] 基于udp实现tcp功能进行大文件传输

一.项目要求Please choose one of following programing languages: C, C, Java, Python;本项目采用的是python3.6LFTP should use a client-server service model;本项目使用客户端-服务器的模式LFTP must include a client side program and a server side program; Client s…

jquery设置video的宽度_jquery html5 视频播放控制代码

jQuery HTML5 视频播放控制核心代码:您的浏览器不支持html5!$(video).click(function() {if ($(this).hasClass(pause) ) {$("video").trigger("play");$(this).removeClass(pause);$(this).addClass(play);} else {$("video&q…

C语言中 1%3,算术什么意思啊 算数什么意思

算术什么意思啊 算数什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!算术是什么意思数学什么是算术和算术和是正数的和,即绝对值的和,例如213.57,…

嘉兴python培训_嘉服集团

请下拉查看…… 嘉服集团工作简报2020年第10期 嘉服集团工作简报2020年第9期 嘉服集团工作简报2020年第8期 嘉服集团工作简报2020年第7期 嘉服集团工作简报2020年第6期 嘉服集团工作简报2020年第5期 嘉服集团工作简报2020年第4期 嘉服集团工作简报2020年第3期 嘉服集团工作简报…

steam有没有c语言软件,【图片】在steam吧你甚至可以讨论c语言_steam吧_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include /*包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数了*/#includeusing namespace std;typedef struct //定义结构体{char score; /*编号*/char name[10]; /*姓名*/char num[15];…

c++ vscode 自动注释_WIN下vscode调试C/C++,从零开始生成helloworld项目【2018年6月29日】...

最近迷上了vscode这款编译器,小巧美观,用起来也很顺手,最主要的是全平台,正好最近要上手做Linux C客户端,以前没接触过linux,先拿它先在WIN上练练手。这几天在网上找了非常多的教程,win总是配不…

AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc

一个基于AVR单片机的计算器程序#include#include//延时函数的头文件#include // 中断函数的头文件#define uint unsigned int#define uchar unsigned char#define BIT(k) (1<#define DI PORTC //夜晶的数据输入端#define No_key 255//没有按键按下的返回值#define key_port …

python 消息框但不影响程序执行_还在用print()查找错误?日志消息不香嘛?| 原力计划...

作者 | 灰小猿责编 | 王晓曼出品 | CSDN博客最近在做项目开发的时候&#xff0c;跟小伙伴聊到修 Bug 这件事。嗯&#xff0c;对于一只没技术的程序猿来说&#xff0c;修 Bug 的确是一件让人头疼的事情&#xff0c;尤其是对于比较大型的项目开发&#xff0c;在变量较多的时候&am…

vue中传值和传引用_vue prop属性传值与传引用示例

vue prop属性传值与传引用示例vue组件在prop里根据type决定传值还是传引用。简要如下&#xff1a;传值&#xff1a;String、Number、Boolean传引用&#xff1a;Array、Object若想将数组或对象类型也以值形式传递怎么办呢&#xff1f;如下方式可以实现&#xff1a;// component-…

.sql文件_Mysql分组排序及Sql文件执行

最近在做一个临时项目&#xff0c;采用的是mysql开发&#xff0c;主要涉及两个问题&#xff1a;1.一个是传参问题&#xff1b;2.另一个是实现对数据分组取前4的数据。个人感觉很有意义&#xff0c;特此记录一下。一.传参问题执行mysql文件&#xff0c;需要从外部传入参数时&…

laravel 异常捕获_Laravel框架捕获各种类型错误

Laravel 中的所有异常都由类App\Exceptions\Handler集中处理&#xff0c;这个类有两个方法&#xff1a;report 和 render。【report 方法】report 方法用于记录异常并将其发送给外部服务。默认情况下&#xff0c;report 方法只是将异常传递给异常基类并写入日志进行记录&#x…

android 动态库 后缀,Android Robolectric加载运行本地So动态库

前言Robolectric 是 Android 的单元测试框架&#xff0c;运行无需 Android 真机环境直接运行在 JVM 之上&#xff0c;所以在 test case 运行速度效率上有了很大提升&#xff0c;接近于 Java JUnit test(JUnit test > Robolectric ≫ androidTest)。不过框架本身并不支持 so …

java web输出语句到控制台_Java工程师(6).循环结构

搞清楚循环结构语句的执行效果与使用场景。程序中的循环流程程序中的循环流程试着编写程序实现下列功能&#xff1a;在控制台中输出100个Hello字符串。在控制台中输出从 1 到 100 的数字。… …循环结构的三要素循环结构必然包含如下三要素&#xff1a;循环变量 &#xff08;循…

sap生产工单报工_SAP系统PP (ProductionPlanning) 模块知识培训

SAP系统PP(ProductionPlanning)模块知识培训主要内容为支持生产系统规范使用SAP系统开展日常业务&#xff0c;掌握SAP系统常用操作和异常处理的方法&#xff0c;人力资源部在6月10日下午组织实施了一期《SAP系统PP模块知识》的培训。本次培训由信息技术部主管工程师解虎授课&am…

android加载百分比功能,android进度条怎么显示百分比

android布局文件里的ProgressBar长形进度条怎么自 在windows操作系统下Android studio按照如下步骤自动义ProgressBar长形进度条的样式。首先创建一个android项目&#xff0c;打开其中的XML布局文件&#xff0c;如下图&#xff1a;添加ProgressBar控件&#xff0c;如下图&#…

64位程序怎么判断指针是否有效_AArch64应用程序级编程模型

根据实现选择&#xff0c;体系结构支持多级执行特权&#xff0c;由从EL0到EL3的不同异常级别表示。EL0对应于最低的特权级别&#xff0c;通常被描述为无特权。应用层程序员模型是在EL0上执行软件的程序员模型。系统软件决定异常级别&#xff0c;因此决定软件运行的特权级别。当…