I learned all of my python on 3.0 and greater and come to find out the server that I need to put my script on is 2.7.5 which means no f strings. I am having issues converting my script from F strings to .format. Also so I can learn, can you please let me know what I did wrong?
The current working code for 3.10.6
import sys
filename=sys.argv[1]
def reformat_file(filename, desired_length=87, suffix='N'):
lines = []
with open(filename, 'r') as fp:
for line in fp:
formatted = line
if filename == 'Bob.txt':
len(line) < desired_length
formatted = f"{line:{desired_length}{suffix}}"
else:
len(line) < desired_length
formatted = f"{line:{desired_length}}"
lines.append(formatted)
with open(filename, 'w') as fp:
fp.write('\n'.join(lines))
return
if __name__ == "__main__":
reformat_file(filename)
I tried doing this in 2.7.5: import sys
filename=sys.argv[1]
def reformat_file(filename, desired_length=87, suffix='N'):
lines = []
with open(filename, 'r') as fp:
for line in fp:
line = line.strip()
formatted = line
if filename == 'Bob.txt':
len(line) < desired_length
formatted = ".format({line:{desired_length}}{suffix})"
else:
len(line) < desired_length
formatted = ".format({line:{desired_length}})"
lines.append(formatted)
with open(filename, 'w') as fp:
fp.write('\n'.join(lines))
return
if __name__ == "__main__":
reformat_file(filename)
When I run the 2.7.5 code instead of the desired output I get this:
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
.format({line:{desired_length}})
The desired format is to pad the end of data in a file and if the file is Bob.txt add an N at the end of the line.
Example:
1 N
111 N
111 N
1111 N
1111 N
changing the f string to .format
format()
correctly pyformat.infolen(line) < desired_length
What is the purpose of this code? It doesn't actually do anything.formatted = "{line:{desired_length}}{suffix}".format(line=line, desired_length=desired_length, suffix=suffix)