我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Python之旅】第二篇(一):Pyt

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Python之旅】第二篇(一):Pyt

说明:

    主要是file()和open()函数的使用,但在查open()函数的帮助时,会有下面的说明:

>>> help(open)
……
Open a file using the file() type, returns a file object.

    因此,两个函数其实都是一样的,下面只用file()。

    在列举file()的作用时,使用help即是很好的方法,下面则是应重点关注的内容:

close(...)
 |      close() -> None or (perhaps) an integer.  Close the file.
flush(...)
 |      flush() -> None.  Flush the internal I/O buffer.
readline(...)
 |      readline([size]) -> next line from the file, as a string. 
readlines(...)
 |      readlines([size]) -> list of strings, each a line from the file.
seek(...)
 |      seek(offset[, whence]) -> None.  Move to new file position.
tell(...)
 |      tell() -> current file position, an integer (may be a long integer).
write(...)
 |      write(str) -> None.  Write string str to file.
writelines(...)
 |      writelines(sequence_of_strings) -> None.  Write the strings to the file.
xreadlines(...)
 |      xreadlines() -> returns self.




1.创建文件


--基本格式:

f = file('test.txt', 'w')
f = write('Hello World!')
f.close()

·w:写模式,文件不存在就创建,存在则自动覆盖原来的内容,只能写,不能读;

·w+:写读模式,但一开始还是会清空原来文件内容,只是在写文件之后可以读取;

·写的内容放在内存当中,如果要写入磁盘,可以f.close()关闭文件或f.flush()实时写入磁盘;

·不可以实时改变模式,只能把文件关闭后,再次打开时定义模式;


--实例:

>>> f = file('test.txt', 'w')
>>> f.write('Hello World!')
>>> f.flush()
xpleaf@xpleaf-machine:~/seminar6/day2$ more test.txt
Hello World!


--write()与writelines()

·前者写入的内容只能是字符串,后者则可以写入列表:

>>> f.write(['a', 'b', 'c'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object
>>> f.writelines(['a', 'b', 'c'])
>>>


--f.close()的重要说明

·如果没有f.close(),则在程序运行结束后,系统会自动帮我们关闭文件;

·长时间运行的程序,需要打开并编辑文件(如用'a'模式),没有关闭文件,会导致文件内容无法保持一致性的问题(如果系统中有其他程序需要编辑该文件);

·Linux中的Vim编辑器自带文件锁定功能,即不能同时编辑同一文件;

·Python中文件的锁是没有加上的,需要开发者自行为文件加锁。




2.读取文件与遍历文件内容


--基本格式:

f = file('test.txt', 'r') ===>可以不加'r',默认就是该模式
f = read()
f.close()

·r:默认;

·r+:读写模式,可以尝试使用,每读取一行,指针就跳到下一行,写的时候,就直接覆盖掉指针指的这一行;

·rb:在windows平台下编辑的文件,在linux中用python进行读取时,模式要选择“rb”,否则有可能会出现乱码的现象,即跨平台的文件都要注意此点;


--read()、readline、readlines()与xreadlines()

·前三者都是直接把文件内容全部写入内存当中,然后再全部读取或一行一行地读取;

·都采用迭代的方式读取,即指针最开始指向第一行,读取第一行后,指针指向下一行;


-read()

·把文件内容全部读取:

>>> f = file('test.txt', 'r')
>>> f.read()
"Hello World!\nI'm xpleaf.\nNice to meet you!\n"
>>> f.read()
''            ===>内容已经读完,即指针已经在最后一行,后面没有内容

·可以用tell()查看当前指针的位置:

>>> f.tell()
43            ===>43,即是最后一个字符

·重新读取文件内容,可以f.close()后再次打开,也可以使用f.seek(0):

>>> f.seek(0)    ===>重新寻址,让指针指向文件最开始
>>> f.tell()
0
>>> print f.read()
Hello World!
I'm xpleaf.
Nice to meet you!


-readline()

·以字符串方式,一行一行地读取文件内容:

>>> f.seek(0)
>>> f.readline()
'Hello World!\n'
>>> f.readline()
"I'm xpleaf.\n"
>>> f.readline()
'Nice to meet you!\n'
>>> f.readline()
''


-readlines()

·以列表的方式,一行一行地读取文件内容,一行即为列表中的一个元素:

>>> f.seek(0)
>>> f.readlines()
['Hello World!\n', "I'm xpleaf.\n", 'Nice to meet you!\n']
>>> f.readlines()
[]

·因此,习惯性的用法是:修改文件内容

>>> f.seek(0)
>>> filelist = f.readlines()
>>> print filelist
['Hello World!\n', "I'm xpleaf.\n", 'Nice to meet you!\n']
>>> filelist[2] = 'See you next time!'
>>> print filelist
['Hello World!\n', "I'm xpleaf.\n", 'See you next time!']

·再以w的方式打开文件,用f.writelines(filelist)的方式写入,即可实现修改文件内容的目的;


-xreadlines()

·不是先把文件内容全部写入内存,而是每读取一行才写入一行,写下一行时即对前面内存中的内容进行回收;

·在读取较大文件时,适宜采用这种办法。


--文件内容的遍历:使用readlines()

>>> f = file('test.txt', 'r')
>>> filelist = f.readlines()
>>> for eachline in filelist:
...   print eachline,
... 
Hello World!
I'm xpleaf.
Nice to meet you!




3.文件内容追加


--基本格式:

f = file('test.txt', 'a')
f = write('Hello World!')
f.close()

·文件内容追加到最后一行上,如果最后一行有'\n',则追加到下一行;

·write只能添加字符串,如果是数值或其它类型的数据类型,则需要使用str()进行转换;


--实例:

>>> f = file('test.txt', 'a')
>>> f.write('See you next time!')
>>> f.write('I will miss you much!\n')
>>> f.flush()
xpleaf@xpleaf-machine:~/seminar6/day2$ cat test.txt
Hello World!
I'm xpleaf.
Nice to meet you!
See you next time!I will miss you much!




4.文件内容替换


--基本格式:

import fileinput
for line in fileinput.input('filepath', inplace = 1):
  line = line.replace('oldtext', 'newtext')
  print line,

·inplace = 1,表示要修改文件内的内容,默认值为0,表示不修改文件内容,加“print line,”时只打印内存中修改的内容(看下面例子);

·inplace = 1时,如果不加“print line,”,原来文件内容会为空;

·可以额外加backup参数,表示在修改文件内容时进行备份;


--实例:


-正确操作:

>>> import fileinput
>>> for line in fileinput.input('test.txt', inplace = 1, backup = '.ori'):
...   line = line.replace('Hello World!', 'Hello, everyone!')
...   print line,
... 
xpleaf@xpleaf-machine:~/seminar6/day2$ ls -l test*
-rw-rw-r-- 1 xpleaf xpleaf 87  9月  4 15:32 test.txt
-rw-rw-r-- 1 xpleaf xpleaf 83  9月  4 15:19 test.txt.ori
xpleaf@xpleaf-machine:~/seminar6/day2$ cat test.txt
Hello, everyone!
I'm xpleaf.
Nice to meet you!
See you next time!I will miss you much!


-如果没有加inplace = 1时:

>>> for line in fileinput.input('test.txt'):
...   line = line.replace('Nice', 'Well')
...   print line,
... 
Hello, everyone!
I'm xpleaf.
Well to meet you!
See you next time!I will miss you much!
xpleaf@xpleaf-machine:~/seminar6/day2$ cat test.txt
Hello, everyone!
I'm xpleaf.
Nice to meet you!
See you next time!I will miss you much!


-如果没有加“print line,”时:

>>> for line in fileinput.input('test.txt'):
...   line = line.replace('Nice', 'Well')
... 
>>> for line in fileinput.input('test.txt', inplace = 1):
...   line = line.replace('Hello', 'Hey')
... 
xpleaf@xpleaf-machine:~/seminar6/day2$ cat test.txt
xpleaf@xpleaf-machine:~/seminar6/day2$     ===>文件内容已被清空


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Python之旅】第二篇(一):Pyt

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【Python之旅】第二篇(一):Pyt

说明:    主要是file()和open()函数的使用,但在查open()函数的帮助时,会有下面的说明:>>> help(open)……Open a file using the file() type, returns a file o
2023-01-31

【Python之旅】第五篇(二):Pyt

前面第五篇(一)中的一个Socket例子其实就是单线程的,即Server端一次只能接受来自一个Client端的连接,为了更好的说明socket单线程和阻塞模式,下面对前面的例子做修改。1.单线程+阻塞+交互式    前面的例子是单线程阻塞和
2023-01-31

【Python之旅】第四篇(二):Pyt

在Python程序的执行过程中,难免会出现异常的情况,如果做的是跟用户交互的程序,当用户输入不可接受的内容时,在可预见的范围内,我们当然是希望可以给用户一些提示,而不是原来Python内置异常中的那些提示语句,毕竟那些语句只适合给程序员做调
2023-01-31

【Python之旅】第五篇(一):Pyt

只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理。1.Socket    socket也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”
2023-01-31

【Python之旅】第四篇(一):Pyt

有时候拿到一个程序接口,需要对其进行扩展,但是又不能修改原来接口的源代码,这时候就需要使用装饰器了。    有下面一个小程序,假如是别人提供给我们的调用接口:import timedef sayHi():        time.sleep
2023-01-31

【Python之旅】第六篇(四):Pyt

在多线程程序执行过程中,为什么需要给一些线程加锁以及如何加锁,下面就来说一说。1.给线程加锁的原因    我们知道,不同进程之间的内存空间数据是不能够共享的,试想一下,如果可以随意共享,谈何安全?但是一个进程中的多个线程是可以共享这个进程的
2023-01-31

【Python之旅】第五篇(三):Pyt

前面的几个例子都是单线程的,下面再来说说多线程的。1.多线程模块    主要是socketserver模块,如下图示:2.多线程原理    如下图示说明:3.SockteServer例子说明服务器端:客户端:4.演示    还是以前面例子,
2023-01-31

【Python之旅】第四篇(三):Pyt

终于是来到了Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。1.面向对象编程的相关名词及解释    世界万物,皆可分类,一切皆为对象。    所谓的面向对象编程,指的是一种
2023-01-31

【Python之旅】第三篇(三):Pyt

说明:    Python的正则表达式功能强大,使用灵活,但由于目前对Python中正则表达式的使用和认识都比较浅,因此急于做笔记和总结显然是不可行的,因此,这里给出下面几篇不错的参考文档:1.较为详细的Python正则表达式功能介绍的文档
2023-01-31

【Python之旅】第六篇(三):Pyt

学习Python的多线程(Multi-threading),至少应该要有进程与线程的基本概念,可以看我转载的一篇文章:《进程与线程的一个简单解释》。    在前面使用Python Socket来编写简版SSH程序的时候,其实已经有使用多线程
2023-01-31

【Python之旅】第六篇(六):Pyt

关于进程与线程的对比,下面的解释非常好的说明了这两者的区别:    这里主要说明关于Python多进程的下面几点:1.多进程的使用方法2.进程间的通信之multiprocessing.Manager()使用3.Python进程池(1)比较简
2023-01-31

【Python之旅】第七篇(一):再谈P

主要是再进一步加深Python中关于多线程相关函数join()的理解以解多线程的执行过程。这里通过下面的例子来作进一步的说明。1.多线程与主程序代码的执行顺序关系    给出下面程序代码:#!/usr/bin/env pythonimpor
2023-01-31

【Python之旅】第五篇(四):基于P

还是继续延续篇五中前三节的例子,通过对代码的修修补补,把它改成一个可以在连接后就能在Client端执行Server端命令的程序,所以就有点类似于SSH连接程序了。    至于还是用前面的例子来改嘛,是因为上课也一直这么干,而且老师也讲得非常
2023-01-31

python安装-ubuntu之第一篇

第一步:安装ubuntu后,了解自带的python理解python的版本python --version终端输入命令:which python显示usr/bin/python说明终端调用是 该文件夹下的python。whereis pyth
2023-01-31

robotFramework第二篇之关键

lesson.robot 1 *** Keywords *** 2 打开谷歌浏览器并访问百度首页 3 Log 打开浏览器,输入http://www.baidu.com,进入百度首页 4 5 输入用户名 6 [Argu
2023-01-30

第一篇python

1、CentOS Linux release 7.2.1511 (Core) 升级python2.7.5到3.6.12、wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tg
2023-01-31

python 学习笔记第二章:安装pyt

记得上次写python的学习笔记是三个月以前了,期间看过,也放下过,这次要坚持下来,一鼓作气,吃下python。   本文内容主要是根据《Python 简明教程》和自己的一些理解去写的,有问题,还请指出。 一、Linux 下安装    如果
2023-01-31

Python学习系列 (第一章):Pyt

一: Python 的简介:   python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。二:Pyth
2023-01-31

python学习之旅(二)

Python基础知识(1)一、变量变量名可以由字母、数字、下划线任意组合而成。注意:1.变量名不能以数字开头;           2.变量名不能为关键字;           3.变量名尽量起有意义的,能够通过变量名知道代表的是什么。 二
2023-01-30

Python成长之路第二篇(3)_字典的

字典的置函数用法(字典dict字典中的key不可以重复)class dict(object):"""dict() -> new empty dictionarydict(mapping) -> new dictionary initiali
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录