簡體   English   中英

Python 只打印一個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM