Creating a new file, filename contains loop variable, python

前端 未结 5 1150
庸人自扰
庸人自扰 2020-11-27 17:10

I want to run a function over a loop and I want to store the outputs in different files, such that the filename contains the loop variable. Here is an example



        
相关标签:
5条回答
  • 2020-11-27 17:36

    Use f = open("file_{0}.dat".format(i),'w'). Actually, you might want to use something like f = open("file_{0:02d}.dat".format(i),'w'), which will zero-pad the name to keep it at two digits (so you get "file_01" instead of "file_1", which can be nice for sorting later). See the documentation.

    0 讨论(0)
  • 2020-11-27 17:44

    Simply construct the file name with + and str. If you want, you can also use old-style or new-style formatting to do so, so the file name can be constructed as:

    "file_" + str(i) + ".dat"
    "file_%s.dat" % i
    "file_{}.dat".format(i)
    

    Note that your current version does not specify an encoding (you should), and does not correctly close the file in error cases (a with statement does that):

    import io
    for i in xrange(10):
       with io.open("file_" + str(i) + ".dat", 'w', encoding='utf-8') as f:
           f.write(str(func(i))
    
    0 讨论(0)
  • 2020-11-27 17:45

    Concatenate the i variable to a string as follows:

    f = open("file_"+str(i)+".dat","w")
    

    OR

    f = open("file_"+`i`+".dat","w") # (`i`) - These are backticks, not the quotes.
    

    See here for other techniques available.

    0 讨论(0)
  • 2020-11-27 17:57

    Try this:

    for i in xrange(10):
       with open('file_{0}.dat'.format(i),'w') as f:
           f.write(str(func(i)))
    
    0 讨论(0)
  • 2020-11-27 18:01

    Use f-strings

    • This is the simplest and most recent implementation of string formatting.
    • f-Strings: A New and Improved Way to Format Strings in Python
    • PEP 498 - Literal String Interpolation
    • The string is preceded by an f and the variable is inside the string quotes, surrounded by {}.
      • f"file_{i}.dat"
    for i in xrange(10):
       f = open(f"file_{i}.dat",'w')
       f.write(str(func(i))
       f.close()
    
    0 讨论(0)
提交回复
热议问题