python-文件操作&&模块

111 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情


大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:



文件操作

  • 使用内建函数 open打开一个文件
handle = open(file_name,access_mode = 'r')
  • file_name是文件的名字. 可以是一个绝对路径, 也可以是相对路径.

    • handle = open('test.txt',access_mode = 'r') #相对路径
      handle = open('Z:\test.txt',access_mode = 'r')  #绝对路径
      
  • access_mode是文件的打开方式. 选项有以下几种

    • 'r' : 只读 'w' : 只写 'a' : 追加写 't' : 按文本方式读写 'b' : 按二进制方式读写

    例如:写文件

    f = open("...","W")
    f.write('写入的内容')
    
  • handle是一个文件句柄, 是一个可迭代的对象. 可以直接使用for循环按行读取文件内容.

for line in handle:
    print(line)
  • handle使用完毕, 需要close掉. 否则会引起资源泄露 (一个进程能打开的句柄数目是有限的)
handle.close()

例子: 统计文本中的词频

一个文本文件中, 每一行是一个单词. 可能有重复. 统计每个单词出现的次数.

image-20220317114413033

in 和 not in 是关键字查找

Bug代码1:

handle = open('test.txt',mode = 'r') #以只读方式,打开Z盘下的test.txt文件
words = {} #创建空字典
#读取
for word in handle:
    word = word[:-1] #切片,去掉最后的换行符\n
    #如果当前行的单词不在字典中,就插入新键值对  否则次数+1
    if word not in words:
        words[word] = 1
    else:
        words[word] +=1 
handle.close()
print(words)

image-20220317114107317


切片的时候出了问题,所以我们换一种方式: 使用字符串的strip函数 :去掉字符串两侧的空白字符

handle = open('test.txt',mode = 'r') #以只读方式,打开Z盘下的test.txt文件
words = {} #创建空字典
#读取
for word in handle:
    word =word.strip()#去掉字符串两侧的空白字符
    #如果当前行的单词不在字典中,就插入新键值对  否则次数+1
    if word not in words:
        words[word] = 1
    else:
        words[word] +=1
handle.close()
print(words)

image-20220317114422309


模块

当我们一个项目的代码量较大的时候, 需要把代码放到多个不同的.py文件中. 起到了命名空间的效果

  • 可以通过 import 关键字, 引用其他.py文件中的代码.
  • 被引入的这个代码文件, 就称之为 "模块".
  • 被引入的文件, 去掉.py后缀名, 就是模块名.

例子:

add.py的内容:

def Add(x,y):
    return x+y

test.py的内容,直接import模块名 不需要加后缀.py

#方式1:导入模块
import add #导入add文件
print(add.Add(1,2)); #打印3  要利用模块进行调用里面的函数#方式2:导入模块中的函数,直接调用
from add import Add #导入add模块中的Add函数
print(Add(1,2))#打印3 直接调用Add函数#还可以import 模块名  然后给模块名取别名
import add
a = add
print(a.Add(1,2))#打印3

运用模块的好处

运用模块,在不同文件命名一样名字的函数,就不会导致覆盖

模块查找顺序

一个模块想要被正确导入,必须放到合适的目录下

  • 一个是当前目录,一个是系统目录(python解释器安装目录)

模块查找的顺序, 先是查找当前目录, 然后查找Python的安装目录.

常用函数

image-20220316090501226


\