I found a repo with lots of Python2 files that includes a script to convert them to Python 3. However I get the following error when I run it:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: truncated \UXXXXXXXX escape
The only change I have made is to add the path to 2to3
rather then just having 2to3
since that is not in my path.
Any suggestions for how to get it working please?
import os
def makepython3():
"""This is a script to transform all the solutions into
Python 3 solutions."""
files = os.listdir('exercises')
exfolder = 'exercises'
ex3folder = 'exercisespy3'
if not os.path.exists(ex3folder):
os.mkdir(ex3folder)
for f in files:
os.system('cp {} {}'.format(exfolder+os.sep+f, ex3folder+os.sep+f))
if f.endswith('.py'):
os.system('"C:\Users\HP\AppData\Local\Programs\Python\Python37-32\Tools\scripts\2to3.py" -w -n --no-diffs {}'.format(ex3folder+os.sep+f))
print('All done!')
if __name__ == '__main__':
makepython3()
The problem is here:
os.system('"C:\Users\HP\....
^-- interpreted as a \U unicode escape
Try using a raw string:
os.system(r'"C:\Users\HP\....
\U
escape sequence was introduced in python 3, which explains that the script worked in python 2. But raw strings should always be used when dealing with literal windows paths.