python-random、sorted、os.listdir、endswith等

我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,先调用它的情况下,使用 random() 生成的随机数将会是同一个。

import random
random.seed(seed)
random.random()#生成一个随机数,指定seed,则每次都生成同一个随机数
random.choice( seq  )#seq -- 可以是一个列表,元组或字符串。每次随机选择一个元素,指定seed,则每次都选择同一个元素

sorted

sorted(iterable, key=None, reverse=False)  
# iterable -- 可迭代对象。
#key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
#reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

os.listdir和os.path.isdir

path = "."#或者path = "./"表示当前目录,"/"表示根目录
dirs = sorted(os.listdir( path ))#os.listdir返回指定路径下的文件和文件夹列表。
os.path.isdir("./")#判断某一路径是否为目录
os.makedirs('dir1/dir2',exist_ok=True)
#exist_ok=True如果子目录不存在,则创建,已经存在就不创建,即使dir1不存在也会创建
#exist_ok=False如果子目录不存在,则创建,已经存在就抛出异常

endswith用于判断字符串是否以指定后缀结尾

print('01234'.endswith('23', 0, 4))#'0123'是否以'23'结尾
print('01234'.endswith('234', 0, 5))#'01234'是否以'234'结尾

tempfile

import tempfile
dir = tempfile.TemporaryDirectory()
file = tempfile.TemporaryFile()
file = tempfile.NamedTemporaryFile ()
TemporaryFile
使用 TemporaryFile 创建的临时文件没有文件名,在文件系统中找不到,只能被当前进程访问
NamedTemporaryFile
文件在文件系统中具有可见名称,可以被其他进程访问
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Pythonsorted函数对os.listdir返回的文件列表进行排序,如下所示: ```python import os path = '/path/to/directory' # 获取目录下的文件列表 files = os.listdir(path) # 对文件列表进行排序 sorted_files = sorted(files) print(sorted_files) ``` 默认情况下,sorted函数按字母顺序对文件名进行排序。如果要按其他方式排序,可以使用sorted函数的关键字参数key。例如,以下代码按文件大小对文件进行排序: ```python import os path = '/path/to/directory' # 获取目录下的文件列表 files = os.listdir(path) # 对文件列表按文件大小进行排序 sorted_files = sorted(files, key=lambda filename: os.stat(os.path.join(path, filename)).st_size) print(sorted_files) ``` 这里的lambda表达式使用os.stat函数获取文件的元数据,然后返回文件大小作为关键字用于排序。请注意,os.stat函数需要传递文件的完整路径,因此我们使用os.path.join函数将目录路径和文件名拼接起来。 ### 回答2: Python os.listdir函数可以用于获取特定目录下的文件名列表。它可以返回一个包含文件名的列表,并支持基于一些标准对列表进行排序。 排序的方法是传递函数参数,通过这个函数参数可以指定如何排序列表。os.listdir函数返回的是一个未排序的列表,我们可以调用内置的sorted函数或列表的sort方法来对它们进行排序。这里推荐使用sorted函数。 sorted函数接受一个可迭代对象并返回一个新的排序列表。我们可以在sorted函数的第一个参数中传递os.listdir函数返回的列表,然后使用key参数指定排序的标准。key参数允许我们传递一个函数,这个函数将在排序过程中用于比较元素。 下面是一个示例: ```python import os # 获取目录下所有文件名 files = os.listdir('/path/to/directory') # 按照文件名进行升序排序 sorted_files = sorted(files) # 按照文件名长度进行升序排序 sorted_files_by_length = sorted(files, key=lambda x: len(x)) # 按照文件名后缀进行降序排序 sorted_files_by_ext = sorted(files, key=lambda x: x.split('.')[-1], reverse=True) ``` 在上面的例子中,sorted_files通过简单地调用sorted函数来获得一个按文件名排序的新列表。sorted_files_by_length通过使用lambda函数来传递一个比较文件名长度的函数进行排序。sorted_files_by_ext通过使用lambda函数来传递一个比较文件名后缀的函数来排序,由于我们想要降序排序,所以使用了reverse参数。 总结一下,Python os.listdir函数的排序取决于传递给sorted函数的函数参数。我们可以根据自己的需求来定义这些函数,以便按特定标准对文件名列表进行排序。 ### 回答3: Pythonos模块提供了丰富的文件和目录操作功能,其中os.listdir()函数可以列出指定目录下的所有文件和子目录。 但是,由于os.listdir()函数返回的文件列表是按照操作系统默认排序方式排列的(Windows为字母顺序,Unix为文件大小和修改日期),当我们需要按照自定义的规则排序时,需要进行一些额外的处理。 下面介绍几种常见的os.listdir()排序方法: 1. sort()函数排序 首先,我们可以通过sort()函数对列表进行排序,该方法使用内置的Python比较函数来按照指定的规则进行排序。 例如,以下代码按照文件名首字母的升序排序: ```python import os path = '/path/to/directory' files = os.listdir(path) files.sort() print(files) ``` 需要注意的是,如果要按照其他规则排序,可以通过将自定义的比较函数传递给sort()方法来实现。 2. sorted()函数排序 除了sort()方法之外,我们还可以使用内置的sorted()函数对文件列表进行排序。sorted()函数返回一个新的列表,而不是在原始列表上进行原地排序。 例如,以下代码按照文件名的长度进行逆序排序: ```python import os path = '/path/to/directory' files = os.listdir(path) files_sorted = sorted(files, key=lambda x: len(x), reverse=True) print(files_sorted) ``` 需要注意的是,我们可以通过key参数传递任何自定义的排序函数,例如按照文件大小或修改日期排序。 3. 自定义排序函数 最后,我们可以编写自定义的排序函数,并将其传递给sort()或sorted()函数来实现自定义排序规则。 例如,以下代码按照文件的修改日期进行逆序排序: ```python import os import datetime def get_file_mtime(path): """获取文件的修改时间""" mtime = os.path.getmtime(path) return datetime.datetime.fromtimestamp(mtime) path = '/path/to/directory' files = os.listdir(path) files_sorted = sorted(files, key=lambda x: get_file_mtime(os.path.join(path, x)), reverse=True) print(files_sorted) ``` 在这个例子中,我们定义了一个名为get_file_mtime()的辅助函数,该函数接收文件路径作为参数,并返回文件的修改日期。我们将该函数作为key参数传递给sorted()函数,以便按照修改日期排序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值