rmw
rmw

Reputation: 129

Printing content of all files in directory

I am trying to go to a directory and print out the content of all files in it.

for fn in os.listdir('Z:/HAR_File_Generator/HARS/job_search'):
    print(fn)

When I use this code all it does is print out the file names. How can I make it so I can actually get the content of the file? I have seen a lot of ways to possibly do this but I am wondering if there is a way to do it in the same format as I have it. It doesn't make sense to me that I'm not able to get the file content instead of the name. What would make sense to me is doing fn.read() and then printing it out but that does not work.

Upvotes: 0

Views: 253

Answers (3)

TigerhawkT3
TigerhawkT3

Reputation: 49320

Assuming they're text files that can actually be printed:

dirpath = 'Z:/HAR_File_Generator/HARS/job_search'
for fn in os.listdir(dirpath):
    with open(os.path.join(dirpath, fn), 'r') as f: # open the file
        for line in f: # go through each line
            print(line) # and print it

Or, in Python 3 (or Python 2 with the proper import):

dirpath = 'Z:/HAR_File_Generator/HARS/job_search'
for fn in os.listdir(dirpath):
    with open(os.path.join(dirpath, fn), 'r') as f: # open the file
        print(*f, sep='') # and send every line to the print function

Upvotes: 1

Aditya
Aditya

Reputation: 3158

mydir = 'Z:/HAR_File_Generator/HARS/job_search'

for fn in os.listdir(mydir):
    print open(mydir+'/'+fn).readlines()

Why is your code not printing any file contents? Because you are not reading any file contents.

For printing prettily..

for fn in os.listdir(mydir):
    for line in open(mydir+'/'+fn).readlines():
        print line

And to avoid this closing issue in case of much much larger files,

for fn in os.listdir(mydir):
    with open(mydir+'/'+fn) as fil:
        print fil.readlines()

Upvotes: 1

Srdjan Grubor
Srdjan Grubor

Reputation: 2675

directory = 'Z:/HAR_File_Generator/HARS/job_search'
for fn in os.listdir(directory):
   print(open(os.path.join(directory, fn), 'rb').read())

Edit: You should probably close your files too but that's a separate issue.

Upvotes: 1

Related Questions