在Python中列出目录和文件
以下是Python中一些重要的方法/函数的列表,其中包含您应该了解的描述以理解本文。
- len() - 用于计算列表、元组、字符串、字典等可迭代对象的元素(项目/字符)数。
- str() - 用于将数据值(整数、浮点数、列表)转换为字符串。
- abspath() - 它返回作为参数传递的文件/目录名称的绝对路径。
- enumerate() – 返回传递的可迭代对象的枚举对象,该对象可用于迭代可迭代的项目并访问其索引。
- list() - 用于通过使用现有的可迭代(列表、元组、字典、集合)创建列表。
- listdir() - 用于列出目录内容。目录的路径作为参数传递。
- isfile() - 它检查传递的参数是否表示文件的路径。如果是则返回True否则返回False
- isdir() - 检查传递的参数是否表示目录的路径。如果是则返回True否则返回False
- 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