• 在Python中实现对文件的读取创建操作
  • 发布于 2个月前
  • 347 热度
    0 评论
  • TIMPU
  • 1 粉丝 8 篇博客
  •   

写在之前

文件操作是所有语言都会涉及的内容,因为我们经常会遇到创建文件,读取文件的内容这样的常规操作,那么在Python中该如何对文件进行创建,读取操作呢?这就是本文所要涉及的内容。本文所有的代码编写均是Python3 版本。


读取文件

假设你已经在某个文件夹下创建了 “test.txt” 文件,且里面有一些内容,那你在当前位置输入 Python3,进入到交互模式,然后执行下面的操作:

>>> f = open('test.txt')
>>> for line in f:
...    print(line)
... 
My name is Rocky

I love Python

这里提醒大家注意一下,如果是在该文件所在的位置启动的 Python 交互模式,那么按照上面的方法 open(‘test.txt’) 打开文件,这意味着 test.txt 是在当前文件夹下的,如果要打开其它文件夹下的文件,要使用相对路径或者绝对路径来表示,从而让 Python 能找到那个文件。


看上面的例子,open() 一个文件,即生成了一个对象,把这个对象赋值给变量 f,从而让变量 f 和文件对象之间建立了引用关系,接下来用 for 循环读取文件中的内容,把读到的文件中的每行赋值给变量 line (这里的每行可以看作是对象),从打印的结果看,每一行与你读取的文件的每一行是相同的。

如果你做完了上述操作,那么请看下面的操作:

>>> for line1 in f:
...    print(line1)
... 
>>>

你会奇怪的发现,竟然什么也没有,是不是出错了?其实并没有,因为之前已经读取过一次文件的内容了,并且到了文件的末尾,再重复操作,就要从文章的末尾开始读了,当然就没有什么东西了,在 Python 中并不会认为这是错误。如果你想再次读取的话,请重新 open() 一下文件。


创建文件

读文件只是针对文件的操作之一,还有创建文件。

在上面读文件的时候,我们打开的是一个已经存在的文件,那么如何创建一个新文件呢?请看下面的操作:

>>> new_file = open('new.txt','w')
>>> new_file.write('this is a new file')
18
>>> new_file.close()

new_file = open(‘new.txt’,’w’) 意味着在当前的目录下创建了一个名为 new_file 的文件,该文件为 “w” 打开模式。

new_file.write('this is a new file’) 则是向已建立的新文件中写入 “this is a new file”,并且返回的是写入字符串的长度。

new_file.close() 则是关闭当前文件,然后将写入的话保存到文件中。

由上面的例子我们可以看出,创建文件我们同样用的是 open() ,但是多了个 “w” ,这是告诉 Python 用什么模式打开文件。在 Python 中,可以用很多不同的模式打开文件,请看下图:

从上图中可以看出,不同的模式下打开文件可以进行不同的读写操作,如果什么都不写的话,默认为以只读(r)的方式打开文件。


使用 with 自动关闭文件

在前面的操作中我们可以看到,在对文件进行写操作之后,要执行关闭文件的操作,执行关闭文件的操作是为了将写入的内容保存到文件中,如果不进行 close() 操作的话,那么新写入的内容将不会被保存。

Python 早就知道会有很多马大哈们会忘记 close()的操作,所以它创建了一种简单的方法,这就是 with,它会实现自动关闭文件,看!Python 是多么的人性化!请看下面的操作:

>>> new_file.close()
>>> with open('new.txt','a') as f:
...     f.write(‘\nwith is good good good.')
... 
23

在这里 with 其实是要发起一个语句的,这里兼具了后面我会讲的 try/finally,即可以在遇到异常的时候发出提醒,此处暂时先不讲,等以后我再细说,我们先学会用 with。

>>> with open('new.txt') as f:
...    print(f.read())
... 
this is a new file
with is good good good.

看吧,在 with 中我们可以放轻松的扔掉 close 了,上面例子中用到的 read() 方法,在明天的文章中我会讲到。


文件的属性

很多时候,我们需要获取一个文件的有关属性,比如文件的创建日期,修改日期等等,在 Python 中有一个专门针对时间设计的模块 -- time。请看下面的操作:

>>> import time
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=21, tm_min=49, tm_sec=32, tm_wday=2, tm_yday=206, tm_isdst=0)

其实还有一种办法可以查看文件的这些属性,就是 os 模块里的 stat,在这里我就是提一嘴,之后讲到 os 模块的时候再仔细说。


写在最后

最后感谢你能看到这里,希望我写的东西能够让你有到收获,但是我还是希望我在文章里插入的代码,你们能自己动手试一下,都很简单。

The end。

用户评论