簡體   English   中英

如何在迭代文件路徑字符串列表時獲取索引和文件名?

[英]How to get index and filename while iterating the list of file path string?

假設我有一個列出一些csv文件的假設列表:

example_list = ['./Data/File_1.csv',
                './Data/File_2.csv',
                './Data/File_3.csv']

我想要的印刷品如下:

'This is file number 1 for File_1.csv'
'This is file number 2 for File_2.csv'
'This is file number 3 for File_3.csv'

做一個簡單的for循環只打印第一個字符串三次。 我以為我會指定python的索引來'識別'我指的是哪個文件,如下所示:

for data in example_list:
    if data[0]:
        print('This is file number 1 for File_1.csv')
    elif data[1]:
        print('This is file number 2 for File_2.csv')
    else:
        print('This is file number 3 for File_3.csv')

然而,這也僅打印出第一個字符串。 如何自定義每個索引的打印內容?

enumerate工作:

for (idx, st) in enumerate(example_list, 1):
    print('This is file number {} for {}'.format(idx, st.split('/')[-1]))
  • enumerate(example_list, 1)枚舉將起始索引設置為1的列表

  • print('This is file number {} for {}'.format(idx, st.split('/')[-1]))以所需的格式打印,帶有st.split('/')[-1])獲取/ split -ted列表的最后一個成員。

作為/是POSIX系統中的目錄分隔符,沒有文件名可以包含/ ,因此split('/')[-1]應該與os.path.basename相同。 但是,最好使用os.path.basename BTW。

例:

In [46]: example_list = ['./Data/File_1.csv',
                './Data/File_2.csv',
                './Data/File_3.csv']

In [47]: for (idx, st) in enumerate(example_list, 1):
    print('This is file number {} for {}'.format(idx, st.split('/')[-1]))
   ....:     
This is file number 1 for File_1.csv
This is file number 2 for File_2.csv
This is file number 3 for File_3.csv

enumerate列表,打印格式化的字符串。 您可以使用os.path.basename獲取文件的基本名稱。

>>> from os.path import basename
>>> example_list = ['./Data/File_1.csv',
...                 './Data/File_2.csv',
...                 './Data/File_3.csv']
>>> 
>>> for i, fname in enumerate(example_list, 1):
...     print('This is file number {} for file {}'.format(i, basename(fname)))
... 
This is file number 1 for file File_1.csv
This is file number 2 for file File_2.csv
This is file number 3 for file File_3.csv

您需要使用os.path.basename enumerate (在迭代時獲取索引) (從文件路徑獲取文件名)來實現此目的。 這是一個列表理解表達式作為示例:

>>> import os
>>> example_list = [
    './Data/File_1.csv',
    './Data/File_2.csv',
    './Data/File_3.csv']

>>> ['This is file number {} for {}'.format(i, os.path.basename(name)) for i, name in enumerate(example_list)]
['This is file number 0 for File_1.csv', 'This is file number 1 for File_2.csv', 'This is file number 2 for File_3.csv']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM