Reputation: 243
I am using python on windows and the path of my project folder is way too long. For example:
pathProject = r'C:\Users\Account\OneDrive\Documents\Projects\2016\Shared\Project-1\Administrative\Phase-1\Final'
os.chdir(pathProject)
How can I break this very long strong into multiple lines in the most elegant way? I know how to do it if the string is not a raw string. However, if I try something like this, I get an error:
pathProject = r'''C:\Users\Account\OneDrive\
Documents\Projects\2016\Shared\
Project-1\Administrative\Phase-1\
Final'''
What is the most elegant way to break this raw string into multiple lines?
Upvotes: 19
Views: 11261
Reputation: 37509
You can use parenthesis to trigger automatic line continuation. The strings will be automatically concatenated.
pathProject = (
r"C:\Users\Account\OneDrive"
r"\Documents\Projects\2016\Shared"
r"\Project-1\Administrative\Phase-1\Final"
)
Upvotes: 34
Reputation: 51
In Python 3 we can use simple \
to extend any type of string wether f-strings or r-strings.
Here we put \
after every line which we want to continue.
pathProject = r'C:\Users\Account\OneDrive' \
r'\Documents\Projects\2016\Shared' \
r'\Project-1\Administrative\Phase-1\Final'
\
is used to continue any statement in python. for example:
if some_condition_1 and some_condition_2 and some_condition_3 and some_condition_4:
pass
can be written as
if some_condition_1 and some_condition_2 \
and some_condition_3 and some_condition_4:
pass
Upvotes: 0
Reputation: 5582
The problem is that the ending \
is interpreted as continuation (to eliminate the LF character; Joooeey’s answer was wrong on this) and the spaces at the beginning of other lines are also included. As a single raw string, this would work:
pathProject = r'''C:\Users\Account\OneDrive\
\Documents\Projects\2016\Shared\
\Project-1\Administrative\Phase-1\
\Final'''
I think I would prefer Brendan’s way, but you probably want to know how raw strings work (or not) for your case.
Upvotes: 0
Reputation: 3866
You almost got it! The issue is that raw strings cannot end with a backslash. Hence, this works:
pathProject = r'''C:\Users\Account\OneDrive
\Documents\Projects\2016\Shared
\Project-1\Administrative\Phase-1
\Final'''
Note that if you put spaces into the triple-quoted string to indent it, like in your example, there will be spaces in your string, which you don't want. If you like indents, you can use automatic line continuation with parentheses as suggested in Brendan's answer. Again, make sure that the lines don't end with a backslash.
Upvotes: 5