English 中文(简体)
如何获得烟雾。 [复制]
原标题:How to get os.listdir to list files in order [duplicate]
  • 时间:2018-03-06 19:43:33
  •  标签:
  • python

我不想把所有档案改名为目录。 视窗探测器名称排列后,按正确顺序排列:

Cue 001 - 002.mp3
...
Cue 001 - 010.mp3
Cue 001 - 011.mp3
...
Cue 001 - 020.mp3
Cue 001 - 021.mp3
...
Cue 001 - 0111.mp3
Cue 001 - 0112.mp3

到目前为止,我已经能够使用<代码>os.chdir,将工作名录改为有目标文档的名录,并通过使用<代码>印(os.getcwd()加以确认。

import os
# Lets change working directory to the Python Rename Test folder
os.chdir(r F:My backupDocuments and SettingsuserMy DocumentsMy         MusicThe CommitmentsThe Commitments - Mustang Sally_RecursiveBackupPython Rename Test )
# confirm working directory by printing it out
print (os.getcwd())
# loop over the files in the working directory and printing them out
for file in os.listdir(os.getcwd()):
    print (file)

This is what I get:

Cue 001 - 002.mp3
...
Cue 001 - 010.mp3
Cue 001 - 0100.mp3
Cue 001 - 0101.mp3
...

我怎样才能获得<代码>os.listdir,以便按适当顺序打印文件?

问题回答

我假定你想要的是档案延期前直接编号的档案。

import re

files = os.listdir(os.getcwd())
sorted_files = sorted(files,key=lambda x: int(re.sub(r D ,  ,x.strip())[3:]))
print(sorted_files)

如果贵国的档案中还有第1个编号超过100,则该代码按数字表示。

In[2]: import re
  ...: 
  ...: 
  ...: def sorted_by_nums(filenames):
  ...:     """Assuming filenames are in this format  Cue 001 - 002.mp3 """
  ...:     def by_nums(filename):
  ...:         *nums, _ = re.findall(r d+ , filename)
  ...:         return [int(num) for num in nums]
  ...: 
  ...:     return sorted(filenames, key=by_nums)
  ...: 
In[3]: filenames = [
  ...:      Cue 001 - 010.mp3 ,
  ...:      Cue 001 - 011.mp3 ,
  ...:      Cue 001 - 0112.mp3 ,
  ...:      Cue 001 - 0111.mp3 ,
  ...:      Cue 001 - 002.mp3 ,
  ...:      Cue 001 - 020.mp3 ,
  ...:      Cue 001 - 021.mp3 
  ...: ]
# you could replace `filenames` with `os.listdir(...)` below
In[4]: for file in sorted_by_nums(filenames):
  ...:     print(file)
  ...: 
Cue 001 - 002.mp3
Cue 001 - 010.mp3
Cue 001 - 011.mp3
Cue 001 - 020.mp3
Cue 001 - 021.mp3
Cue 001 - 0111.mp3
Cue 001 - 0112.mp3




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签