Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I pass a .txt file as a function parameter

Say I have a function that reads a .txt file and creates arrays based on the columns of the data within that file. What I have right now inside the function looks like:

data = open("some_file_name.txt","r")

But if I want to change the .txt file that the function reads I have to manually go into the code and type in the new file name before running it again. Instead, how can I pass any file name to the function so it looks like:

my_function(/filepath/some_file_name.txt):
    data = open("specified_file_name.txt","r")
like image 892
user3555455 Avatar asked Oct 20 '25 06:10

user3555455


1 Answers

I think you want

def my_function(filepath):
    data = open(filepath, "r")
    ...

and then

my_function("/filepath/some_file_name.txt")

or better:

def my_function(data):
    ...

and then

with open("/filepath/some_file_name.txt", "rb") as data:
    my_function(data)

The latter version lets you pass in any file-like object to my_function().

Update: if you want to get fancy and allow file names or file handles:

def my_func(data):
    if isinstance(data, basestring):
        with open(data, 'rb') as f:
            return my_func(f)
    ...
like image 149
Ben Avatar answered Oct 22 '25 03:10

Ben



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!