Python初级第1课——文件操作(只读课堂)

    科技2022-08-10  91

        ...:

    ---------------------------------------------------------------------------

    NameError Traceback (most recent call last)

    <ipython-input-19-bf09fccabcc0> in <module>()

    1

    ----> 2 mystr = myfile.read(3)

    3 print(mystr)

    4

    5 #这样就把abc读出来了

     

    NameError: name 'myfile' is not defined

     

    In [20]: #今天这节课是适应Spyder或Python的,所以所有错误一律不管。

     

    In [21]: #读完第一次后,我们要加入一些代码:

     

    In [22]: myfile.seek(0,0)

    ---------------------------------------------------------------------------

    NameError Traceback (most recent call last)

    <ipython-input-22-7dc147563182> in <module>()

    ----> 1 myfile.seek(0,0)

     

    NameError: name 'myfile' is not defined

     

    In [23]: #这样就能把指针重置了。

     

    In [24]: #现在,在你的txt文件里另起一行,输入“aaaccc”。

     

    In [25]: #接下来,我们新建一个文件:读取文件.py

     

    In [26]: #接下来,我们在里面输入:

     

    In [27]: myfile = open('1.txt','r')

        ...: mystr = myfile.readline()

        ...: print(mystr)

        ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-27-d0bab098bb6c> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mystr = myfile.readline()

    3 print(mystr)

    4

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [28]: #在运行后,你会发现,它会把 1.txt里面的第一行全部提取出来。

     

    In [29]: #在win里面,Python会一直往下读文件,直到遇到换行符:\r , \n

     

    In [30]: #也可以是这个“结束符”:EOF(文件的末尾标识符)

     

    In [31]: #接下来,你在“读取文件.py”里面输入:

     

    In [32]: mystr = myfile.readline()

        ...: print(mystr)

        ...: mystr = myfile.readline()

        ...: print(mystr)

        ...: mystr = myfile.readline()

        ...: print(mystr)

        ...:

    ---------------------------------------------------------------------------

    NameError Traceback (most recent call last)

    <ipython-input-32-7e20e94701c3> in <module>()

    ----> 1 mystr = myfile.readline()

    2 print(mystr)

    3 mystr = myfile.readline()

    4 print(mystr)

    5 mystr = myfile.readline()

     

    NameError: name 'myfile' is not defined

     

    In [33]: #然后运行,你会发现它是这样呈现的:

     

    In [34]: # abcdefg

        ...:

        ...: # 123456

        ...:

        ...: # aaasss

        ...:

     

    In [35]: #虽然我们没有设置换行符,但是print里面是自带了换行的。

     

    In [36]: #如果我们不需要:

     

    In [37]: #将 print(mystr) 改成: print(mystr,end='')

     

    In [38]: #

     

    In [39]: #接下来,我们再创建一个文件:读取文件2.py

     

    In [40]: #记住啊,这上述四个文件都要保存在刚开始的“文件操作”文件夹里。

     

    In [41]: #但是像之前那样一行一行地读太麻烦了,所以,我们Python里面有个非常简便的代码。

     

    In [42]: #在“读取文件2.py”中输入:

     

    In [43]: myfile = open('1.txt','r')

        ...: mystr = myfile.readlines()

        ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-43-9f61426df58c> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mystr = myfile.readlines()

    3

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [44]: #再输入:

     

    In [45]: print(mystr)

    ---------------------------------------------------------------------------

    NameError Traceback (most recent call last)

    <ipython-input-45-f4dce09fbdc1> in <module>()

    ----> 1 print(mystr)

     

    NameError: name 'mystr' is not defined

     

    In [46]: #运行之后:

     

    In [47]: ['abcdefg\n', '123456\n', 'aaasss']

    Out[47]: ['abcdefg\n', '123456\n', 'aaasss']

     

    In [48]: #它就变成了一个列表。

     

    In [49]: #接下来,将 mystr = myfile.readlines() 改成:

     

    In [50]: # mylist = myfile.readlines()

     

    In [51]: #再将 print(mystr) 改成 print(mylist) 。

     

    In [52]: #接下来输入:

     

    In [53]: ['abcdefg\n','123456\n','aaaccc']

        ...: #字符串列表

        ...: print(len(mylist))

        ...:

    ---------------------------------------------------------------------------

    NameError Traceback (most recent call last)

    <ipython-input-53-321f19551d88> in <module>()

    1 ['abcdefg\n','123456\n','aaaccc']

    2 #字符串列表

    ----> 3 print(len(mylist))

    4

     

    NameError: name 'mylist' is not defined

     

    In [54]: #运行之后, 它将会显示:

     

    In [55]: ['abcdefg\n', '123456\n', 'aaaccc']

        ...: 3

        ...:

    Out[55]: 3

     

    In [56]: #行数也写出来了。

     

    In [57]: #也就是说,当你遇到一个陌生的文件时,根本不需要去打开它,而去用python读取来操作它。

     

    In [58]: #——————————————————————————————————————————————————————————————————————

     

    In [59]: #目前,我们已经创建了4个文件,3个.py文件,1个.txt文件。

     

    In [60]: #当然如果你的文件太复杂,太大,例如20GB,这样普通的电脑是无法打开的。所以一般这种python代码(脚本)最高上线是200MB。

     

    In [61]: #——————————————————————————————————————————————————————————————————————

     

    In [62]: #下面,我们用 for 来打开文件。

     

    In [63]: #同样,先创建一个"for读文件.py"

     

    In [64]: #然后输入:

     

    In [65]: myfile = open('1.txt','r')

        ...:

        ...: for var in myfile:

        ...: print(var)

        ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-65-7d796c895e1c> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2

    3 for var in myfile:

    4 print(var)

    5

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [66]: #但是,这样读的话,我们需要下面的操作就麻烦了:

        ...: #文件中的每个字节

        ...: #文件的每一行

        ...: #整个文件

        ...:

     

    In [67]: #接下来,将整个程序改为:

     

    In [68]: myfile = open('1.txt','r')

        ...: mylist =[]

        ...: for var in myfile:

        ...: mylist.append(var)

        ...: print(var)

        ...:

        ...: print(mylist)

        ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-68-3db6d0dc29e1> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mylist =[]

    3 for var in myfile:

    4 mylist.append(var)

    5 print(var)

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [69]: #——————————————————————————————————————————————————————————————————————

     

    In [70]: #下面,我们就要“写文件”了。

     

    In [71]: # write('str'): 在文件中写入字符串

        ...: #该方法在字符串的结尾不加入'\n'换行符号,并且在成功写入 的时候,会提示出写入的字符。

        ...:

        ...: # file.flush(): 把缓冲区中的内容刷新到磁盘上。

        ...: #我们还可以使用 file.close() 刷新缓冲区

        ...:

        ...: # file.writelines(list_of_string): 把字符串列表写入文件

        ...:

     

    In [72]: #首先我们要新创建一个“写文件.py”,再在同一个文件夹内创建一个“2.txt”。

     

    In [73]: #现在先把之前有关“读文件”的文件全部关闭,只留下刚刚创建的。

     

    In [74]: #输入:

     

    In [75]: myfile = open('2.txt','r')

        ...: myfile.write('abc')

        ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-75-14779bb392f6> in <module>()

    ----> 1 myfile = open('2.txt','r')

    2 myfile.write('abc')

    3

     

    FileNotFoundError: [Errno 2] No such file or directory: '2.txt'

     

    In [76]: #当你在编译器运行的时候,你会发现它将报错。因为——现在是只读模式!!!

     

    In [77]: #要把脚本改为:

     

    In [78]: myfile = open('2.txt','w')

        ...: myfile.write('abc')

        ...:

    Out[78]: 3

     

    In [79]: #这里的“Out”不要理。

     

    In [80]: #当你运行脚本的时候,你会发现 2.txt 里面就有了“abc”。

     

    In [81]: #如果你继续使用 myfile = open('2.txt','w')

        ...: # myfile.write('abc')

        ...: # 来写入,你会发现,它会覆盖之前的字符。

        ...:

     

    In [82]: #但是,还有,只要你用了'w'(写权限),你运行之后你即使不写东西,你会发现,你的征关 2.txt 里面什么都没有。这就是写权限的弊端。

     

    In [83]: #所以我们用'a'。

     

    In [84]: #它每次都会把写入的文件都会写在之前的后面。

     

    In [85]: #现在,在你的 2.txt 文件中写入:

     

    In [86]: # asjalkdasldjass

     

    In [87]: # asdaksdjalsk

     

    In [88]: #再输入:

     

    In [89]: myfile = open('2.txt','a')

        ...:

        ...: myfile.write('aaa')

        ...:

    Out[89]: 3

     

    In [90]: #运行后你将会发现,你的文本里就有了:

        ...: # asjalkdasldjass

        ...: # asdaksdjalsk

        ...: # aaa

        ...:

     

    In [91]: #它就不会截断文件,它就会写在后面。

     

    In [92]: #如果把整个程序换成这样:

     

    In [93]: from time import sleep

        ...: myfile = open('2.txt','a')

        ...:

        ...: myfile.write('bbb')

        ...: sleep(5)

        ...:

     

    In [94]: #这样,你就会看到,你的txt里面“aaa”后面就多了一串“bbb”。

     

    In [95]: #

     

    In [96]: #程序结束,文件关闭

     

    In [97]: #用关闭代码将会自动将你的文件和磁盘内存里的文件自动同步。

     

    In [98]: #在 myfile.write('ccc') 下面添加: myfile.flush()

     

    In [99]: #我们有这些方式来刷新缓冲区:

        ...: #1.刷新缓冲区:缓冲区

        ...: #2.flush来手动

        ...: #3.close

        ...:

     

    In [100]: #flush不需要等待程序结束,就可以输入我们要的字符。

     

    In [101]: #下面我们再加一行代码:

     

    In [102]: myfile.close()

     

    In [103]: #它是跟open配对的,这就是我们说的:一个程序,要有头有尾,有始有终。

     

    In [104]: #但是你不写这个代码,程序也会自动帮你关闭文件。

     

    In [105]: #

     

    In [106]: #现在,我们如果需要大量写入要换行的字符:

     

    In [107]: #先新建一个“写文件2.py”

     

    In [108]: #如果我们要把 1.txt 里的内容拷到 2.txt 里,称为拷文件。

     

    In [109]: #这里,我们要用到一个新的代码: writelines

     

    In [110]: #输入:

     

    In [111]: myfile1 = open('1.txt','r')

         ...: myfile2 = open('2.txt','a')

         ...:

         ...: mylist1 = myfile1.readlines()

         ...:

         ...: print(mylist1)

         ...: myfile2.writelines(mylist1)

         ...:

         ...: myfile1.close()

         ...: myfile2.close()

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-111-04e8874cabca> in <module>()

    ----> 1 myfile1 = open('1.txt','r')

    2 myfile2 = open('2.txt','a')

    3

    4 mylist1 = myfile1.readlines()

    5

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [112]: #这样就成功备份了文件。

     

    In [113]: #——————————————————————————————————————————————————————————————————————

     

    In [114]: #现在,我们就学会了一套完整文件操作:读,写,拷。

     

    In [115]: #本课所有.py文件代码:

     

    In [116]: #1.打开文件:

     

    In [117]: myfile = open('1.txt','r')

         ...: mystr = myfile.read(3)

         ...: print(mystr)

         ...: myfile.seek(0,0)

         ...: mystr1 = myfile.read(5)

         ...: print(mystr1)

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-117-ab3e4dbd2465> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mystr = myfile.read(3)

    3 print(mystr)

    4 myfile.seek(0,0)

    5 mystr1 = myfile.read(5)

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [118]: #2.读取文件:

     

    In [119]: myfile = open('1.txt','r')

         ...: mystr = myfile.readline()

         ...:

         ...: print(mystr,end='')

         ...: mystr = myfile.readline()

         ...: print(mystr)

         ...: mystr = myfile.readline()

         ...: print(mystr)

         ...: mystr = myfile.readline()

         ...: print(mystr)

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-119-f8a8bac971e6> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mystr = myfile.readline()

    3

    4 print(mystr,end='')

    5 mystr = myfile.readline()

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [120]: #3.读取文件2:

     

    In [121]: myfile = open('1.txt','r')

         ...: mylist = myfile.readlines()

         ...: print(mylist)

         ...: ['abcdefg\n','123456\n','aaaccc']

         ...: #字符串列表

         ...: print(len(mylist))

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-121-413cd226507a> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mylist = myfile.readlines()

    3 print(mylist)

    4 ['abcdefg\n','123456\n','aaaccc']

    5 #字符串列表

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [122]: #4.for读文件:

     

    In [123]: myfile = open('1.txt','r')

         ...: mylist =[]

         ...: for var in myfile:

         ...: mylist.append(var)

         ...: print(var)

         ...:

         ...: print(mylist)

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-123-3db6d0dc29e1> in <module>()

    ----> 1 myfile = open('1.txt','r')

    2 mylist =[]

    3 for var in myfile:

    4 mylist.append(var)

    5 print(var)

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [124]: #5.写文件:

     

    In [125]: from time import sleep

         ...: myfile = open('2.txt','a')

         ...:

         ...: myfile.write('ccc')

         ...: myfile.flush()

         ...:

         ...: sleep(5)

         ...:

         ...: myfile.close()

         ...:

     

    In [126]: #写文件2:

     

    In [127]: myfile1 = open('1.txt','r')

         ...: myfile2 = open('2.txt','a')

         ...:

         ...: mylist1 = myfile1.readlines()

         ...:

         ...: print(mylist1)

         ...: myfile2.writelines(mylist1)

         ...:

         ...: myfile1.close()

         ...: myfile2.close()

         ...:

    ---------------------------------------------------------------------------

    FileNotFoundError Traceback (most recent call last)

    <ipython-input-127-04e8874cabca> in <module>()

    ----> 1 myfile1 = open('1.txt','r')

    2 myfile2 = open('2.txt','a')

    3

    4 mylist1 = myfile1.readlines()

    5

     

    FileNotFoundError: [Errno 2] No such file or directory: '1.txt'

     

    In [128]: #——————————————————————————————————————————————————————————————————————

     

    In [129]: print("\n本次“只读课堂”的python教程就到这了,欢迎继续收看!\n")

     

    本次“只读课堂”的python教程就到这了,欢迎继续收看!

     

     

    In [130]: #本节课后面有课件!


    本课配套素材资源:

     https://download.csdn.net/download/jeasonlan/12911815

    Processed: 0.012, SQL: 8