我正在尝试使用os.walk()打印出目录及其子目录中的所有文件。这就是我写的:
def usewalk():
for root, dirname, filename in os.walk("/"):
print filename
我不知道我应该使用什么作为os.walk()的目录。也就是说,我不确定括号中应包括哪些内容。我想如果我使用“/”,它将从文件所在的目录开始,但它打印出不在其中的文件,例如“['。dbfseventsd','。DS_Store','。file' ,'。hotfiles.btree','mach_kernel']“。在我看来,它是从Python的默认目录开始的?
答案 0 :(得分:3)
不,/
是文件系统的 root 。使用.
从当前目录开始:
def usewalk():
for root, dirname, filenames in os.walk("."):
print filename
也打印root
以查看循环的目录名称;以下代码段打印完整路径名称:
def usewalk():
for root, dirname, filenames in os.walk("."):
for filename in filenames:
print os.path.join(root, filename)
答案 1 :(得分:1)
正如我之前所说 - /
目录是你的系统根目录。
为了一个好的起点,你有几个选择:
os.walk(os.getcwd())
os.walk(os.path.dirname(__file__))
os.walk(os.getenv('HOME'))
我不建议从.
开始,因为它可能无法移植到Windows(getenv
选项也不会,但对于基于unix的程序来说它是一个不错的选择)。使用os.getcwd()
代替可移植性和正确性。
我建议#4 - 因为它会产生最有用和可预测的代码。
答案 2 :(得分:0)
/
是根目录。您可能会将它与./
混淆,这是引用当前目录的常用方法。