📜  在Python中列出目录和文件

📅  最后修改于: 2022-05-13 01:54:37.720000             🧑  作者: Mango

在Python中列出目录和文件

以下是Python中一些重要的方法/函数的列表,其中包含您应该了解的描述以理解本文。

  1. len() - 用于计算列表、元组、字符串、字典等可迭代对象的元素(项目/字符)数。
  2. str() - 用于将数据值(整数、浮点数、列表)转换为字符串。
  3. abspath() - 它返回作为参数传递的文件/目录名称的绝对路径。
  4. enumerate() – 返回传递的可迭代对象的枚举对象,该对象可用于迭代可迭代的项目并访问其索引。
  5. list() - 用于通过使用现有的可迭代(列表、元组、字典、集合)创建列表。
  6. listdir() - 用于列出目录内容。目录的路径作为参数传递。
  7. isfile() - 它检查传递的参数是否表示文件的路径。如果是则返回True否则返回False
  8. isdir() - 检查传递的参数是否表示目录的路径。如果是则返回True否则返回False
  9. append() - 用于在列表中追加项目。

请参阅下面在交互式Python终端上执行的代码,以快速了解上述函数/方法的用法。

>>> nums = [1,2,3,4,5]  # list
>>> name = "Alexander"
>>> details = {"name": "Hemkesh", "age": 23, "active": True}
>>> 
>>> # Using len()
... 
>>> len(nums)
5
>>> len(name)
9
>>> len(details)
3
>>> 
>>> # Using str()
... 
>>> str(12)
'12'
>>> str(nums)
'[1, 2, 3, 4, 5]'
>>> str(details)
"{'active': True, 'age': 23, 'name': 'Hemkesh'}"
>>> 
>>> # Using abspath()
... 
>>> import os
>>> os.listdir(".")
['Django', 'Prep', 'python-the-snake']
>>> os.path.abspath("./Django")    # pass ".\Django" on windows
'/Users/admin/projects/Python/Django'
>>> os.path.abspath("Django")
'/Users/admin/projects/Python/Django'
>>> 
>>> # Using enumerate()
...
>>> enumerate(nums)

>>> 
>>> for index, item in  enumerate(nums):
...     print index, item
... 
0 1
1 2
2 3
3 4
4 5
>>> 
>>> # Using list()
...
>>> list()
[]
>>> list(details )
['active', 'age', 'name']
>>> list(name)
['A', 'l', 'e', 'x', 'a', 'n', 'd', 'e', 'r']
>>> 
>>> # Using isfile() & isdir()
... 
>>> os.path.isdir("Django")
True
>>> os.path.isfile("Django")
False
>>>
>>> os.path.isdir("./python-the-snake/README.md")
False
>>> os.path.isfile("./python-the-snake/README.md")
True
>>> 
>>> # Using append()
...
>>> nums.append(12)
>>> nums
[1, 2, 3, 4, 5, 12]
>>> nums.append(67)
>>> nums
[1, 2, 3, 4, 5, 12, 67]
>>> 
>>> # Don't press "Run on IDE" button available on right. You will get error  
... # as the statements are already executed on interactive terminal.
...
>>>

不同操作系统上的路径结构
Windows 使用\ (反斜杠)作为路径分隔符,例如。 C:\用户\桌面\
基于 Linux 的系统,如 MAC OS X,Linux 使用/ (正斜杠),例如。 /用户/桌面/

当我们在最终程序中使用它时,让我们快速浏览一下上述方法和函数的工作原理。

# Python version : 2.7.12
  
# len()
# To count number of items in a list
# To count number of characters in a string
evens = [ 2, 34, 6, 8, 10]
print len(evens)
  
city = "Bangalore"
print len(city), "\n"
  
# str() : Converting into string representation
odds = [ 1, 3, 67, 45, 83, 59]
year = 2017
  
print odds
print str(odds) + " A list.\n"  
print year
print str(year) + " A year.\n"
  
  
# enumerate() : iterating over index & value of a list
for (index, item) in enumerate(odds):
    print index, item
  
  
# abspath() : Getting absolute path of passed argument(path)
import os
absolute_path = os.path.abspath(".")
print "\n", absolute_path, "\n"
  
  
# isdir() : To check if passed argument is valid directory path
answer = os.path.isdir("/Users/admin/Desktop/js")
print answer
  
  
# isfile() : To check if the passed argument is valid file path
answer = os.path.isfile("/Users/admin/Desktop/js/array.js")
print answer, "\n"
  
  
# list() : To create list
details = { "name":"Rojert Rendrick", "age":24, "city":"Bangalore" }
keys = list( details )
print keys, "\n"
  
# append() : Appending items to list
print evens
evens.append(98)
evens.append(64)
print evens, "\n"
  
# repetition operator(*) on strings
print "Python"*3
print "#"*20

输出:

5
9 

[1, 3, 67, 45, 83, 59]
[1, 3, 67, 45, 83, 59] A list.

2017
2017 A year.

0 1
1 3
2 67
3 45
4 83
5 59

/Users/admin/projects/Python/PythonFiles 

True
True 

['city', 'age', 'name'] 

[2, 34, 6, 8, 10]
[2, 34, 6, 8, 10, 98, 64] 

PythonPythonPython
####################

/Users/admin/projects/ Python /PythonFiles中有许多Python文件和目录,我们将列出所有这些。

假设当前工作目录是/Users/admin/projects/ Python/Django/E-Commerce-projects/ecommerce-2/src ,里面有一些文件和文件夹。

在你的情况下,情况会有所不同。您只需要传递要列出的目录的确切路径。

以下是根据传递的绝对或相对路径显示所有文件和目录的Python代码。

如果调用语句中没有指定路径,则显示当前工作目录的内容。

# This Python code is for Python version   : 2.7.12
  
def show_directories(dir_list, path):
    """ A function that lists the directories """
    import os
    s = "%s%d%s"%("\n", len(dir_list), " directories of " + os.path.abspath(path))
    l = len(s)
    print s
    print "="*l
    for index, dir in enumerate(dir_list):
        print str(index+1) + ") ", dir
  
  
def show_files(file_list, path):
    """ A function that lists the files """
  
    import os
    s = "%s%d%s"%("\n", len(file_list), " files of " + os.path.abspath(path))
    l = len(s)
    print s
    print "="*l
    for index, file in enumerate(file_list):
        print str(index+1) + ") ", file
  
  
def show_cwd_contents( path="." ):
    # A function that calls 2 functions to separately 
    # listing out directories and files.
    # It takes a default argument as cwd(.). We can 
    # pass other paths too.
    import os
  
    f_list = []
    d_list = list()
  
    try:
        for f in os.listdir(path):
            if os.path.isfile(os.path.join(path, f)):
                f_list.append(f)
            else:
                if os.path.isdir(os.path.join(path, f)):
                    d_list.append(f)
    except:
        print "\nError, once check the path"
        return
  
    show_files(f_list, path)
  
    show_directories(d_list, path)
  
  
if __name__ == "__main__":
  
    # If this module is imported in other module then 
    # we need to separately call show_cwd_contents() Or 
    # show_cwd_contents(path).
    show_cwd_contents()
    show_cwd_contents("/Users/admin/projects/Python/PythonFiles")

输出:

5 files of /Users/admin/projects/Python/Django/E-Commerce-projects/ecommerce-2/src
===================================================================================
1)  .gitignore
2)  db.sqlite3
3)  manage.py
4)  requirements.txt
5)  todo.txt

5 directories of /Users/admin/projects/Python/Django/E-Commerce-projects/ecommerce-2/src
=========================================================================================
1)  ecommerce2
2)  newsletter
3)  products
4)  static_in_pro
5)  templates

70 files of /Users/admin/projects/Python/PythonFiles
=====================================================
1)  2_list_iterators.py
2)  app.py
3)  class_script_exec.py
4)  class_variables.py
5)  date_and_time.py
6)  datetime.txt
7)  dict.py
8)  dictionary.py
9)  django_home.html
10)  error_handling.py
11)  error_handling_output.py
12)  error_handling_output.txt
13)  execution_pickle.py
14)  fb_task.py
15)  for.py
16)  gfg_sum_of_primes_in_numbers.py
17)  hackerrank_numbers.py
18)  hck_addition_aint_simple.py
19)  hck_biased_chandan.py
20)  hck_c_counts.py
21)  hck_c_counts2.py
22)  hck_c_counts3.py
23)  hck_cool_numbers.py
24)  hck_earth_fans.py
25)  hck_earth_fans_2.py
26)  hck_earth_fans_3.py
27)  hck_earth_fans_final_on_28_dec_2016.py
28)  hck_Little_Jhool_and_psychic_powers.py
29)  hck_lonely_monk.py
30)  hck_lonely_monk_orig.py
31)  hck_maximum_AND.py
32)  hck_min_max_problem.py
33)  hck_monk_and_power_of_time.py
34)  hck_numbers_rotation.py
35)  hck_palindomic_numbers.py
36)  hck_print_hackerearth.py
37)  hck_print_hackerearth_2_way.py
38)  hck_range_query.py
39)  hck_recursive_functions.py
40)  hck_recursive_sums.py
41)  hck_strange_addition.py
42)  hck_sum_of_numbers.py
43)  interactive_img_resolutions.txt
44)  json.py
45)  json.pyc
46)  katyperry.py
47)  lambda_expression.py
48)  linked_list_delete_nodes_at_front.py
49)  linked_list_delete_nodes_at_front_output.txt
50)  linked_list_is_palindrome_gfg.py
51)  linked_list_is_palindrome_gfg_output.text
52)  linked_list_is_palindrome_gfg_testing.py
53)  linked_list_node_deletion_from_any_position.txt
54)  linked_list_node_deletion_from_end.py
55)  linked_list_node_deletion_from_end_output.txt
56)  linked_list_node_deletion_from_middle.py
57)  linked_list_node_insertion_at_beginning.py
58)  linked_list_node_insertion_at_end.py
59)  linked_list_node_insertion_at_middel_output.txt
60)  linked_list_node_insertion_at_middle.py
61)  map.py
62)  merge_lists.py
63)  mufeez_android_interview.py
64)  python_for_loops.py
65)  python_for_loops2.py
66)  remove_dupliates.py
67)  show_dir_and_files.py
68)  show_dir_and_files_test.py
69)  smarika_urllib_python2.7.10.py
70)  while.py

2 directories of /Users/admin/projects/Python/PythonFiles
==========================================================
1)  socket_programming
2)  wx