人人都能学编程
English 开始学习
课程 0 · 编程之前第 5 课 / 共 8 课免费阅读

文件和文件夹 · 计算机入门

保存一张照片后,它去了哪里?怎样再找到它?

课程目录

为什么需要它

存储里放着成千上万的东西。文件和文件夹就是你(以及每个程序)把它们整理好、再找到它们的办法。

以后你的程序要按路径打开文件,Linux 课讲的也全是在文件夹之间走来走去。现在把这个想法弄懂,后面都会很轻松。

直觉理解

文件 File 是一份保存下来、有名字的东西:一张照片、一首歌、一份文档、一个程序。文件夹 Folder(也叫目录 Directory)是装文件和其他文件夹的容器。文件夹套文件夹,就形成了一棵树:

/                 最上层
└── Users
    └── mia
        ├── Documents
        │   └── cv.docx
        └── Pictures
            ├── beach.jpg
            └── 2024
                └── cat.png

要准确说出一个文件在哪儿,就写出它的路径 Path:从最上层一路到它经过的文件夹,用 / 隔开:

/Users/mia/Pictures/2024/cat.png

就像写信封上的地址,从国家一直写到门牌号。Windows 上的路径以盘符开头、用反斜杠,比如 C:\Users\mia\Pictures\cat.png,道理是一样的。

扩展名。最后一个点后面的部分说明这是什么文件:.jpg 和 .png 是图片,.mp3 是声音,.mp4 是视频,.pdf 和 .docx 是文档,.txt 是纯文本,.py 是 Python 程序。其实每个文件里面都只是字节,扩展名告诉程序该怎么读它们。

定义

文件 File

A file is a named collection of data kept in storage, such as a photo, a document or a program.
文件是保存在存储里、有名字的一份数据,比如一张照片、一份文档或一个程序。

文件夹 Folder(目录 Directory)

A folder, or directory, is a container that holds files and other folders.
文件夹(也叫目录)是装文件和其他文件夹的容器。

路径 Path

A path is the address of a file or folder: the folders from the top down to it, separated by slashes.
路径是文件或文件夹的地址:从最上层一直到它经过的文件夹,用斜杠隔开。

示例

拼出一条路径

动手试试

从最上层开始按顺序列出文件夹,最后是文件名。往列表里加一个文件夹(带引号,用逗号隔开),看看路径怎么变长。

folders = ["Users", "mia", "Pictures"]   # change me 改这里
file = "cat.png"
path = ""
for name in folders:
    path = path + "/" + name
path = path + "/" + file
print(path)
逐步执行
  1. L1文件夹,从上往下。["Users", "mia", "Pictures"]
  2. L5每个文件夹前面加一个 /。path = /Users
  3. L5沿着树一层层往下。path = /Users/mia/Pictures
  4. L6文件名放在最后。path = /Users/mia/Pictures/cat.png

把路径画成一棵树

动手试试

反过来:在每个 / 处把路径切开,每一段往里缩进一层。换成你自己的路径试试。

path = "/Users/mia/Documents/school/report.docx"   # change me 改这里
parts = path.split("/")[1:]
depth = 0
for part in parts[:-1]:
    print("  " * depth + part + "/")
    depth = depth + 1
print("  " * depth + parts[-1])
逐步执行
  1. L2在每个 / 处切开。Users | mia | Documents | school | report.docx
  2. L5每个文件夹都比上一个缩进一层。Users/
  3. L7文件在最后一个文件夹里面。report.docx

这是什么文件?

动手试试

这台机器只看扩展名,也就是最后一个点后面的部分。试试 song.mp3、notes.txt 或 game.exe。

name = "holiday.mp4"   # change me 改这里
kinds = {"jpg": "a picture", "png": "a picture", "mp3": "sound",
         "mp4": "a video", "txt": "plain text", "pdf": "a document",
         "py": "a Python program"}
extension = name.split(".")[-1]
print(name, "is", kinds.get(extension, "a kind of file this machine doesn't know"))
逐步执行
  1. L1文件名。name = "holiday.mp4"
  2. L5取最后一个点后面的部分。extension = "mp4"
  3. L6在表里查一查。holiday.mp4 is a video

常见错误

改扩展名不等于转换格式

把 song.mp3 改名成 song.mp4,并不会把音乐变成视频,里面的字节还是原来的。这只会让程序搞不清该怎么打开它。

同名文件可以放在不同文件夹

/Users/mia/notes.txt 和 /Users/sam/notes.txt 是两个不同的文件:说明是哪个文件的是路径,而不只是名字。不过在同一个文件夹里,名字不能重复。

被隐藏的扩展名

很多电脑默认隐藏扩展名,photo.jpg 只显示成 photo。在文件管理器的设置里打开「显示文件扩展名」就能看到。

小测验

1. 在 /Users/mia/Music/song.mp3 里,song.mp3 直接放在哪个文件夹里?

  1. AUsers
  2. Bmia
  3. CMusic
查看答案

答案:C

紧挨在文件名前面的那个文件夹装着它:Music。mia 装着 Music,Users 装着 mia。

2. 哪个文件最可能是图片?

  1. Anotes.txt
  2. Bbeach.jpg
  3. Ctrack.mp3
查看答案

答案:B

.jpg 是图片格式。.txt 是纯文本,.mp3 是声音。

3. 两个文件能都叫 notes.txt 吗?

  1. A绝对不能
  2. B能,只要在不同的文件夹里
  3. C能,在同一个文件夹里也行
查看答案

答案:B

在不同的文件夹里,它们的路径不同,计算机就分得清。放在同一个文件夹里就会冲突。

要点

  • 文件是有名字的一份数据;文件夹装着文件和其他文件夹,形成一棵树。
  • 像 /Users/mia/Pictures/cat.png 这样的路径,准确说明了文件在哪里。
  • 扩展名(.jpg、.mp3、.pdf……)说明这是什么文件。

动手练习

3 道小练习:先想一想,再动手改一改看看结果,最后自己来一次。提交马上告诉你对不对。

  1. 想一想找出路径

    这是一台电脑文件夹树的一部分:

    /
    └── home
        └── leo
            ├── games
            │   └── chess.py
            └── music
                └── rain.mp3

    rain.mp3 的路径是什么?

  2. 改一改照片挪地方了

    Mia 在 Pictures 里面新建了一个叫 pets 的文件夹,把 cat.png 挪了进去。

    改一改文件夹列表,让机器打印出新的路径:

    /Users/mia/Pictures/pets/cat.png
  3. 自己来写出路径

    这是 Ana 的电脑:

    /
    └── Users
        └── ana
            ├── Desktop
            └── Documents
                └── 2025
                    └── taxes.pdf

    写出 taxes.pdf 的完整路径。

在互动课里练这一课

打开互动课,这些例子都能直接改、直接运行,练习题提交马上判题。免费开始,不用注册。

互动课按顺序解锁:前面的课还没学,会先带你到课程地图。

本课术语

术语中文英文定义
File文件A named piece of data kept in storage.
Folder (directory)文件夹(目录)A container that holds files and other folders.
Path路径The address of a file: the folders from the top down to it, separated by slashes.
File extension扩展名The end of a file name after the last dot, such as .jpg, which says what kind of file it is.