[英]Python printing only one file
有人可以解釋一下,為什么我的 function out() 只打印一個文件? 我該如何解決,bcs它應該從2019 DIR遞歸打印很多文件
class log():
def __init__(self, search):
self.search = search
def get_files(self):
path = '/var/log/HOSTS/dhcpd-s/2019'
for root, directories, filenames in os.walk(path):
for directory in directories:
#do whatever u want with absolute dirs path
dir_path = os.path.join(root, directory)
for filename in filenames:
#do whatever u want with absolute file path
file_path = os.path.join(root, filename)
if os.path.getsize(file_path) == 0:
pass
else:
self.file_path = file_path
def out(self):
print(self.file_path)
if __name__=='__main__':
p = log(search = sys.argv[1])
p.get_files()
p.out()
您正在循環運行
self.file_path = file_path
在每次迭代中,它分配新的文件路徑,並在退出循環后保存上次迭代的值。
您可以將self.file_path
聲明為list
def __init__(self, search):
self.search = search
self.file_path = []
和 append file_path
進入列表
self.file_path.append(file_path)
現在您可以打印所有路徑
def out(self):
for path in self.file_path:
print(path)
這應該工作
class log():
def __init__(self, search):
self.search = search
def get_files(self):
files = []
path = '/var/log/HOSTS/dhcpd-s/2019'
for root, directories, filenames in os.walk(path):
for directory in directories:
#do whatever u want with absolute dirs path
dir_path = os.path.join(root, directory)
for filename in filenames:
#do whatever u want with absolute file path
file_path = os.path.join(root, filename)
if os.path.getsize(file_path) == 0:
pass
else:
files.append(file_path)
self.files_path = files
def out(self):
print(self.file_path)
if __name__=='__main__':
p = log(search = sys.argv[1])
p.get_files()
p.out()
下面(將數據收集到列表中)
import os
import sys
class log():
def __init__(self, search):
self.search = search
self.file_path = []
def get_files(self):
path = '/var/log/HOSTS/dhcpd-s/2019'
for root, directories, filenames in os.walk(path):
for directory in directories:
#do whatever u want with absolute dirs path
dir_path = os.path.join(root, directory)
for filename in filenames:
#do whatever u want with absolute file path
file_path = os.path.join(root, filename)
if os.path.getsize(file_path) == 0:
pass
else:
self.file_path.append(file_path)
def out(self):
print(self.file_path)
if __name__=='__main__':
p = log(search = sys.argv[1])
p.get_files()
p.out()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.