简体   繁体   中英

How can I incorporate a text file into the body of my Python script?

Currently, my code is reading an external text file, using:

text_file = open("file.txt", 'r', 0)
my_list = []
for line in text_file
    my_list.append(line.strip().lower())
return my_list

I would like to send my code to a friend without having to send a separate text file. So I am looking for a way of incorporating the content of the text file into my code.

How can I achieve this?

If I convert the text file into list format ([a, b, c, ...]) inside MS notepad using replace function, and then try to copy & paste list into Python IDE (I'm using IDLE), the process is hellishly memory intensive: IDLE tries to string out everything to the right in one line (ie no word wrap), and it never ends.

I'm not totally sure what you're asking, but if I'm guessing what you mean correctly, you could do this:

my_list = ['line1', 'line2']

Where each is a line from your text file.

Just put all the file contents into ONE MASSIVE string:

with open('path/to/my/txt/file') as f:
    file_contents = f.read()

So now, your friend can do:

for line in file_contents.split('\n'):
    #code

which is equivalent to

with open('path/to/file') as f:
    for line in f:
        #code

Hope this helps

I would suggest

  1. assign the contents of the file to a variable in another py file
  2. read the value by importing it in you program

that way the py file will be converted to pyc (send that), or py2exe will take care of it..

and would not allow your friend to mess with the contents...

You could also do something like:

my_file_contents = """file_contents_including_newlines"""
for line in my_file_contents.split('\n'): # Assuming UNIX line ending, else split '\r\n'
    *do something with "line" variable*

Note the use of triple quotes around the text to be sent. This would work for non-binary data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM