众所周知,Python是编程语言的一种,利用Python可以做很多的文件处理。那么Python如何处理文件的?有时,组织文件可能需要的不仅仅是了解其扩展名。例如,获取所有文件均为同一类型的目录。.pdf,.doc,.mp4等。假设您有一个包含幻灯片的文件夹(.ppt)。在这种情况下,您刚刚收到了大量的演讲文件,但要阅读它们并不容易。因此,他们没有为第一堂课准备一张包含所有内容的幻灯片,而是将它们分解为一个会议的幻灯片。在这种情况下,假定我们的文件夹如下所示。


Python如何处理文件的?

DataStructures/

|_Datastructuressession1Slide1.ppt

|_Datastructuressession1Slide2.ppt

|_Datastructuressession1Slide3.ppt

|_Datastructuressession2Slide3.ppt

|_Datastructuressession7Slide8.ppt

|_Datastructuressession9Slide2.ppt

... and so on

发生了什么?我们把幻灯片放好了,但是一团糟。您将不得不在文件夹中浏览一份特定的幻灯片,该幻灯片从您刚刚阅读的位置开始。我们应该使它更容易些,让我们根据会议安排所有幻灯片。

还记得上一篇文章中我们如何生成随机文件吗?我们将做同样的事情,只是这一次,所有文件都是相同的类型。快来看看这里。我们的文件看起来很像create_random_files.py。

#!/bin/python3# create_lectures.pyimport osfrom pathlib import Path
sessions = [str(x) for x in range(1,21)] # create 20sessions
sessions = [str(0)+item if int(item) < 10 else item for item in
sessions]# Datastructuressession01Slide1.ppt# get into the DataStructures
directory
os.chdir('./DataStructures')for item in sessions:
# create 20 slides for each session
for num in range(21):
file_to_create = f"Datastructuressession{item}Slide{num}.ppt"
Path(file_to_create).touch()

好吧好吧。我承认这次我对文件的数量有些不满。那是相当数量。

让我们注意这一行:

sessions = [str(0)+item if int(item) < 10 else item for item in
sessions]

在此之前的行列出了二十个数字,但这是要注意的问题,我们将这些数字中的每个数字转换为字符串。为什么?

如果确实小于10,我们会将数字0作为字符串附加到每个数字之后,这将使较低10范围内的每个数字看起来像这样;01、02、03等。

上面,我们为20个会话范围内的每个会话创建了许多文件。

接下来,我们很简单,根据会话将这些文件分组。

# clean_reading.py#!/bin/python3# move files to directories according to
the file name patternimport osimport shutil# get into the Datastructures
directory
os.chdir('./DataStructures')# Datastructuressession01Slide1.pptfor f in
os.listdir("."):
folder_name = f[14:23]
# print(folder_name)
if not os.path.exists(folder_name):
os.mkdir(folder_name)
shutil.move(f, folder_name)
else:
shutil.move(f, folder_name)

可能需要解释的唯一一行是:

folder_name = f[14:23]

我们已经计算了想要以文件夹命名的名称种类的字符数。在这种情况下,我们分解了文件名的字符串

Datastructuressession01Slide1.ppt

从我们那里得到的第一个s会话是字符号14在整个字符串中,而最后一次会话计数将是字符编号23从我们生成的文件中翻译出来将意味着数字的最后一位

20。

运行此命令可使我们的所有幻灯片在各自的会话中快速,干净地进行。

人们还有很多想做的事情,比如说让程序知道在没有字符位置手动输入的情况下包括了哪些会话,但是存在更高级的工具,尤其是在UNIX环境下。

随意进行探索,找到最适合您的方法。请注意,这是一个使用python制作的很棒的GUI 分拣器。