Jor*_*dan 2 python file-io python-2.7 python-os
我正在练习os模块,更具体地说os.walk().我想知道是否有一种更简单/更有效的方法来查找文件的实际路径,因为这会产生一条路径,表明文件在os.walk()首次运行时位于原始文件夹中:
import os
threshold_size = 500
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.abspath(file)
if os.path.getsize(filePath) >= threshold_size:
print filePath, str(os.path.getsize(filePath))+"kB"
Run Code Online (Sandbox Code Playgroud)
这是我目前的解决方法:
import os
threshold_size = 500
for folder, subfolders, files in os.walk(os.getcwd()):
path = os.path.abspath(folder)
for file in files:
filePath = path + "\\" + file
if os.path.getsize(filePath) >= threshold_size:
print filePath, str(os.path.getsize(filePath))+"kB"
Run Code Online (Sandbox Code Playgroud)
对于shaktimaan,这个:
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.abspath(file)
print filePath
Run Code Online (Sandbox Code Playgroud)
产生这个(大多数这些文件都在项目的子文件夹中,而不是项目本身):
C:\Python27\projects\ps4.py
C:\Python27\projects\ps4_encryption_sol.py
C:\Python27\projects\ps4_recursion_sol.py
C:\Python27\projects\words.txt
C:\Python27\projects\feedparser.py
C:\Python27\projects\feedparser.pyc
C:\Python27\projects\news_gui.py
C:\Python27\projects\news_gui.pyc
C:\Python27\projects\project_util.py
C:\Python27\projects\project_util.pyc
C:\Python27\projects\ps5.py
C:\Python27\projects\ps5.pyc
C:\Python27\projects\ps5_test.py
C:\Python27\projects\test.py
C:\Python27\projects\triggers.txt
C:\Python27\projects\ps6.py
C:\Python27\projects\ps6_pkgtest.py
C:\Python27\projects\ps6_solution.py
C:\Python27\projects\ps6_visualize.py
C:\Python27\projects\ps6_visualize.pyc
C:\Python27\projects\capitalsquiz1.txt
C:\Python27\projects\capitalsquiz2.txt
C:\Python27\projects\capitalsquiz3.txt
C:\Python27\projects\capitalsquiz4.txt
C:\Python27\projects\capitalsquiz5.txt
C:\Python27\projects\capitalsquiz_answers1.txt
C:\Python27\projects\capitalsquiz_answers2.txt
C:\Python27\projects\capitalsquiz_answers3.txt
C:\Python27\projects\capitalsquiz_answers4.txt
C:\Python27\projects\capitalsquiz_answers5.txt
C:\Python27\projects\quiz.py
C:\Python27\projects\file2.txt
C:\Python27\projects\regexes.txt
C:\Python27\projects\regexsearch.py
C:\Python27\projects\testfile.txt
C:\Python27\projects\renamedates.py
Run Code Online (Sandbox Code Playgroud)
我觉得你错了什么abspath.abspath只是将相对路径转换为完整的绝对文件名.
例如
os.path.abspath(os.path.join(r"c:\users\anonymous\", ".."))
#produces this output : c:\users
Run Code Online (Sandbox Code Playgroud)
没有任何其他信息,abspath只能从它可以知道的唯一目录形成绝对路径,对于您的情况是当前工作目录.所以目前正在做的是加入os.getcwd()和你的file
所以你需要做的是:
for folder, subfolders, files in os.walk(os.getcwd()):
for file in files:
filePath = os.path.join(os.path.abspath(folder), file)
Run Code Online (Sandbox Code Playgroud)