当前位置:首页>python>Python小白成长记 · 第10课 | 文件与文件路径操作

Python小白成长记 · 第10课 | 文件与文件路径操作

  • 2026-10-11 08:09:33
Python小白成长记 · 第10课 | 文件与文件路径操作
大家好,我是星源,一个正在自学Python的19岁编程小白 🤓。这是我的学习笔记系列,我会把每天学到的知识点整理出来,分享给同样在路上的小伙伴,希望能和大家一起进步 🚀。

📌 今日学习内容

👉 "今天我们来学习文件操作与文件路径管理的基础知识"


✨ 知识点讲解

1️⃣文件与文件路径基础

文件存储在文件夹中,路径描述了文件在计算机中的位置。文件路径可以是绝对路径(从根文件夹开始)或相对路径(相对于当前工作目录)。例如,在Windows中,C:\Users\asweigart\Documents是一个绝对路径。

2️⃣Windows路径与OS X/Linux路径

在Windows中,路径使用反斜杠\作为分隔符,而在OS X和Linux中,使用正斜杠/。Python的os.path.join()函数可以自动处理不同操作系统的路径分隔符:

importosprint(os.path.join('usr', 'bin', 'spam'))  # 输出: usr\bin\spam (Windows) 或 usr/bin/spam (OS X/Linux)

3️⃣ 当前工作目录

每个运行中的程序都有一个当前工作目录。可以使用os.getcwd()获取当前工作目录,使用os.chdir()改变工作目录:

importosprint(os.getcwd())  # 获取当前工作目录os.chdir('/path/to/new/directory')  # 更改工作目录

4️⃣ 绝对路径与相对路径

绝对路径总是从根文件夹开始,而相对路径基于当前工作目录。可以通过os.path.abspath()将相对路径转换为绝对路径:

importosprint(os.path.abspath('.'))  # 获取当前目录的绝对路径

5️⃣ 创建新文件夹

使用os.makedirs()可以创建新的文件夹及其所有必要的中间文件夹:

importosos.makedirs('C:\\delicious\\walnut\\waffles')  # 创建嵌套文件夹

6️⃣ os.path模块

os.path模块提供了许多处理文件路径的函数:

  • os.path.basename(path):返回路径中的基本名称(文件名)

  • os.path.dirname(path):返回路径中的目录名称

  • os.path.split(path):将路径分割为目录名称和基本名称的元组

  • os.path.getsize(path):返回文件的字节数

  • os.path.exists(path):检查路径是否存在

  • os.path.isfile(path):检查路径是否为文件

  • os.path.isdir(path):检查路径是否为文件夹

7️⃣读取文件内容

可以使用open()函数以读取模式打开文件,然后用read()或readlines()方法读取内容:

hello_file=open('hello.txt')content=hello_file.read()print(content)lines=hello_file.readlines()print(lines)

8️⃣写入文件

以写入或追加模式打开文件,可以使用write()方法写入内容:

bacon_file=open('bacon.txt', 'w')  # 写模式,会清空文件bacon_file.write('Hello world!\n')bacon_file.close()bacon_file=open('bacon.txt', 'a')  # 追加模式bacon_file.write('Bacon is not a vegetable.')bacon_file.close()

9️⃣用shelve模块保存变量

shelve模块可以将变量保存到二进制文件中,以便后续使用:

importshelveshelf_file=shelve.open('mydata')shelf_file['cats'] = ['Zophie', 'Pooka', 'Simon']shelf_file.close()# 读取保存的变量shelf_file=shelve.open('mydata')print(shelf_file['cats'])shelf_file.close()

1️⃣0️⃣用pprint模块保存变量

pprint模块可以将数据结构保存为可读的Python代码:

importpprintcats= [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]pprint.pformat(cats)file_obj=open('myCats.py', 'w')file_obj.write('cats = '+pprint.pformat(cats) +'\n')file_obj.close()

1️⃣1️⃣文件操作项目:生成随机测验试卷

编写一个程序生成多份随机排列问题的测验试卷及答案:

import randomcapitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', ...}  # 更多州和首府for quiz_num in range(35):    # 创建测验和答案文件    quiz_file = open(f'capitalsquiz{quiz_num + 1}.txt', 'w')    answer_key_file = open(f'capitalsquiz_answers{quiz_num + 1}.txt', 'w')    # 写入测验标题    quiz_file.write('Name:\n\nDate:\n\nPeriod:\n\n')    quiz_file.write(f'{" " * 20} State Capitals Quiz (Form {quiz_num + 1})\n\n')    # 打乱州的顺序    states = list(capitals.keys())    random.shuffle(states)    # 为每个州生成一个问题    for question_num in range(50):        correct_answer = capitals[states[question_num]]        wrong_answers = list(capitals.values())        del wrong_answers[wrong_answers.index(correct_answer)]        wrong_answers = random.sample(wrong_answers, 3)        answer_options = wrong_answers + [correct_answer]        random.shuffle(answer_options)        # 写入问题和选项        quiz_file.write(f'{question_num + 1}. What is the capital of {states[question_num]}?\n')        for i in range(4):            quiz_file.write(f'    {"ABCD"[i]}. {answer_options[i]}\n')        quiz_file.write('\n')        # 写入答案        answer_key_file.write(f'{question_num + 1}. {"ABCD"[answer_options.index(correct_answer)]}\n')    quiz_file.close()    answer_key_file.close()

小结

  1. 文件路径操作:使用os.path模块处理文件路径,包括获取绝对路径、分割路径、检查文件存在性等。

  2. 读写文件:通过open()、read()、write()等方法实现文件的读取和写入。

  3. 保存变量:利用shelve和pprint模块将变量保存到文件中。

  4. 文件操作项目:生成随机测验试卷的项目展示了综合运用文件操作的能力。


✅ 总结

  1. 文件路径处理:掌握路径的组成和操作,灵活使用os.path模块。

  2. 文件读写:学会以不同模式打开文件,并进行读写操作。

  3. 变量保存:使用shelve和pprint模块保存和读取变量。

  4. 项目实践:通过生成测验试卷的项目,加深对文件操作的理解。


📢 互动提问

你在处理文件路径和文件操作时,遇到过哪些挑战?是如何解决的?

最新文章

随机文章