I am trying to append a string value of a variable to end of a string.
I am getting a missing closing quote.
My Python snippet is:
from Utilities.HelperMethods import read_from_file
class DataCategoriesPage_TestCase(BaseTestCase):
def test_00001_add_data_categories(self):
project_name = read_from_file("project_name")
administration_page.enter_location_for_export(r"\STORAGE-1TestingTest DataClearCoreExports5" + project_name)
What is the correct syntax?
The value of the variable project name is "selenium_regression_project_09/04/2016"
I would like to add this to the end of the string path \STORAGE-1TestingTest DataClearCoreExports5
asked Apr 9, 2016 at 15:54
Riaz LadhaniRiaz Ladhani
3,86615 gold badges69 silver badges124 bronze badges
You can’t end a raw string literal with a , because a backslash can still be used to escape a quote. Quoting the string literal documentation (from the section on raw string literals):
String quotes can be escaped with a backslash, but the backslash remains in the string; for example,
r"""is a valid string literal consisting of two characters: a backslash and a double quote;r""is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character).
This looks like a file path, so use os.path.join() to concatenate the file path parts:
import os.path
administration_page.enter_location_for_export(
os.path.join(
r"\STORAGE-1TestingTest DataClearCoreExports5",
project_name))
Note that the raw string no longer needs to end with a backslash now.
answered Apr 9, 2016 at 16:00
Martijn Pieters♦Martijn Pieters
1.0m282 gold badges3963 silver badges3293 bronze badges
2
Martijn Peters has given the correct answer for your problem (use os.path.join), but there is a solution to the problem of having a literal with lots of back-slashes (so you want to write it as a raw literal), that ends with a back slash. The solution is to write most of it as a raw literal, but write the trailing back-slash as an ordinary (escaped) literal. Python will concatenate two adjacent string literals into one. So in your case, the literal would be written as:
r"\STORAGE-1TestingTest DataClearCoreExports5" "\"
This could conceivably be useful to someone writing some other back-slash heavy code (e.g. regular expressions).
answered Apr 9, 2016 at 16:09
Apparently you can’t end a raw string with a backslash — that will escape the final quotation mark. (Bug?). Try:
r"\STORAGE-1TestingTest DataClearCoreExports5" + "\" + project_name
answered Apr 9, 2016 at 16:08
![]()
1
SyntaxError: EOL while scanning string literal error indicates that the interpreter expects a specific character or set of characters in the python code, but such characters do not exist before the end of the line. EOL is an abbreviation for “End of Line”. The string must be enclosed in quotation marks, either single or double. The error is caused by a missing quotation in the string, which is common in Python.
The python interpreter reaches the last character of the line while scanning the string without encountering the closing quotation marks. Therefore, the SyntaxError: EOL while scanning literal string error is thrown. Whenever this syntax error occurs, Python stops the execution of a program. To solve this issue, add the single and double quotation marks to enclose the string.
An EOL error is a syntax error that happens when the Python interpreter expects a specific character or string to appear in a given line of code but the character or string does not appear before the end of the line. It’s generally a typo error or syntax mistakes.
1. Causes
The “SyntaxError: EOL when scanning the literal string” error occurs in Python while scanning the string in the code line, and the python interpreter reaches the end of the line for the following causes.
- Missing quotations to close the string
- Mixing the quotations
- Multiline String
2. Missing Quotes to close the string
The missing double quotation in the string is the cause of the syntax error. The double quotation is either missing at the beginning or at the end of the string. Identify the beginning and the end of the text. Use a double quotation to enclose the text. The syntax error “SyntaxError: EOL while scanning string literal” will be resolved by replacing the missing quote.
Program
x = "My first Program
print(x)
Error
File "/Users/python/Desktop/test.py", line 1
x = "My first Program
^
SyntaxError: EOL while scanning string literal
[Finished in 0.1s with exit code 1]
Solution
x = "My first Program"
print(x)
OR
x = 'My first Program'
print(x)
Output
My first Program
3. Mixing the Quotes
The syntax error is caused by the string’s use of a single quote followed by a double quotation. A different quotations are used at the beginning and ending of the string. Include the text with double quote marks at the beginning and end. The syntax error will be resolved by replacing the incorrect quote with the right quotation.
Program
x = "My first Program'
print(x)
Error
File "/Users/python/Desktop/test.py", line 1
x = "My first Program
^
SyntaxError: EOL while scanning string literal
[Finished in 0.1s with exit code 1]
Solution
x = "My first Program"
print(x)
OR
x = 'My first Program'
print(x)
Output
My first Program
4. Multiline without slash
If the string spans more than one line, the python interpreter will reach the end of the line without finding the end quotes. Python has the option to ignore the end of line ( EOL ) character. You can use a multiline string by escaping the end of the line character using slash ( ). The code below shows how to escape the end of line character.
Program
x = "My first
Program"
print(x)
Solution
x = "My first
Program"
print(x)
Output
My first Program
[Finished in 0.1s]
5. Multiline with triple quotes
The string is not able to span multiple lines with enclosing single or double quotation enclosures. If the string contains a lot of lines, then adding the escape character in each line will be tedious. Python allows for the enclosure of multiline strings with triple quotes. The “eol while scanning string literal” is resolved by replacing the double quotation with the triple quotation.
The code below demonstrates how to use a triple-quote multi-line string.
Program
x = "Yawin Tutor
is my favorite
website"
print(x)
Solution
x = """Yawin Tutor
is my favorite
website"""
print(x)
OR
x = '''Yawin Tutor
is my favorite
website'''
print(x)
Output
Yawin Tutor
is my favorite
website
[Finished in 0.1s]
I am trying to append a string value of a variable to end of a string.
I am getting a missing closing quote.
My Python snippet is:
from Utilities.HelperMethods import read_from_file
class DataCategoriesPage_TestCase(BaseTestCase):
def test_00001_add_data_categories(self):
project_name = read_from_file("project_name")
administration_page.enter_location_for_export(r"\STORAGE-1TestingTest DataClearCoreExports5" + project_name)
What is the correct syntax?
The value of the variable project name is "selenium_regression_project_09/04/2016"
I would like to add this to the end of the string path \STORAGE-1TestingTest DataClearCoreExports5
asked Apr 9, 2016 at 15:54
Riaz LadhaniRiaz Ladhani
3,86615 gold badges69 silver badges124 bronze badges
You can’t end a raw string literal with a , because a backslash can still be used to escape a quote. Quoting the string literal documentation (from the section on raw string literals):
String quotes can be escaped with a backslash, but the backslash remains in the string; for example,
r"""is a valid string literal consisting of two characters: a backslash and a double quote;r""is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character).
This looks like a file path, so use os.path.join() to concatenate the file path parts:
import os.path
administration_page.enter_location_for_export(
os.path.join(
r"\STORAGE-1TestingTest DataClearCoreExports5",
project_name))
Note that the raw string no longer needs to end with a backslash now.
answered Apr 9, 2016 at 16:00
Martijn Pieters♦Martijn Pieters
1.0m282 gold badges3963 silver badges3293 bronze badges
2
Martijn Peters has given the correct answer for your problem (use os.path.join), but there is a solution to the problem of having a literal with lots of back-slashes (so you want to write it as a raw literal), that ends with a back slash. The solution is to write most of it as a raw literal, but write the trailing back-slash as an ordinary (escaped) literal. Python will concatenate two adjacent string literals into one. So in your case, the literal would be written as:
r"\STORAGE-1TestingTest DataClearCoreExports5" "\"
This could conceivably be useful to someone writing some other back-slash heavy code (e.g. regular expressions).
answered Apr 9, 2016 at 16:09
Apparently you can’t end a raw string with a backslash — that will escape the final quotation mark. (Bug?). Try:
r"\STORAGE-1TestingTest DataClearCoreExports5" + "\" + project_name
answered Apr 9, 2016 at 16:08
![]()
1
I am trying to append a string value of a variable to end of a string.
I am getting a missing closing quote.
My Python snippet is:
from Utilities.HelperMethods import read_from_file
class DataCategoriesPage_TestCase(BaseTestCase):
def test_00001_add_data_categories(self):
project_name = read_from_file("project_name")
administration_page.enter_location_for_export(r"\STORAGE-1TestingTest DataClearCoreExports5" + project_name)
What is the correct syntax?
The value of the variable project name is "selenium_regression_project_09/04/2016"
I would like to add this to the end of the string path \STORAGE-1TestingTest DataClearCoreExports5
asked Apr 9, 2016 at 15:54
Riaz LadhaniRiaz Ladhani
3,86615 gold badges69 silver badges124 bronze badges
You can’t end a raw string literal with a , because a backslash can still be used to escape a quote. Quoting the string literal documentation (from the section on raw string literals):
String quotes can be escaped with a backslash, but the backslash remains in the string; for example,
r"""is a valid string literal consisting of two characters: a backslash and a double quote;r""is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character).
This looks like a file path, so use os.path.join() to concatenate the file path parts:
import os.path
administration_page.enter_location_for_export(
os.path.join(
r"\STORAGE-1TestingTest DataClearCoreExports5",
project_name))
Note that the raw string no longer needs to end with a backslash now.
answered Apr 9, 2016 at 16:00
Martijn Pieters♦Martijn Pieters
1.0m282 gold badges3963 silver badges3293 bronze badges
2
Martijn Peters has given the correct answer for your problem (use os.path.join), but there is a solution to the problem of having a literal with lots of back-slashes (so you want to write it as a raw literal), that ends with a back slash. The solution is to write most of it as a raw literal, but write the trailing back-slash as an ordinary (escaped) literal. Python will concatenate two adjacent string literals into one. So in your case, the literal would be written as:
r"\STORAGE-1TestingTest DataClearCoreExports5" "\"
This could conceivably be useful to someone writing some other back-slash heavy code (e.g. regular expressions).
answered Apr 9, 2016 at 16:09
Apparently you can’t end a raw string with a backslash — that will escape the final quotation mark. (Bug?). Try:
r"\STORAGE-1TestingTest DataClearCoreExports5" + "\" + project_name
answered Apr 9, 2016 at 16:08
![]()
1
SyntaxError EOL While Scanning String Literal?
Syntax errors are detected before the programs runs. Usually, it is just a typing mistake or a syntactical mistake. Such an error in Python is the SyntaxError EOL while scanning String literal.
This SyntaxError occurs while the interpreter scans the string literals and hits the EOL(‘End of Line’). But if it does not find a specific character before the EOL, the error is raised.
Let us understand it more with the help of an example.
What is “SyntaxError EOL while scanning string literal”?
A SyntaxError EOL(End of Line) error occurs when the Python interpreter does not find a particular character or a set of characters before the line of code ends. When the error is raised, the code execution is halted.
- Missing Quotes for closing the string
- String Extends Past one Line
1. Missing Quotes for Closing the String:
While closing a string, there are often times when we forget to add an inverted comma (single or double). When this happens, the Python interpreter is not able to find the End of the line while scanning the string. Thus the SyntaxError EOL error occurs.
Example 1:
MyList = []
if not MyList:
print("MyList is empty
else:
print("MyList is not empty")
Output:
File "main.py", line 3
print("MyList is empty
^
SyntaxError: EOL while scanning string literal
Explanation
In the above code, we have initialized an empty list MyList and used an if-else block to print if ‘MyList’ is empty or not. Inside the if block the print statement is used to print a string. But the string is missing double inverted commas at the end. And because of the missing commas, the Python interpreter is unable to find the end of the string.
Thus the SyntaxError error is encountered.

Solution
Make sure that string should always be closed within single or double-quotes.
Correct Code
llist = []
if not llist:
print("List is empty")
else:
print("List is not empty")
Output
MyList is empty
2. String Extends Past one Line
In Python, we can not extend our string which is enclosed within a single or double inverted comma past a single line. If we try to do so the error “SyntaxError EOL while scanning the string literal occurs” will pop up. If we want our string to extend in multiple lines, then they should be enclosed within triple inverted commas (single or double).
Example 2:
ttuple = ()
if not ttuple:
print("Tuple is
empty")
else:
print("Tuple is not empty")
Output :
file "main.py", line 3
print("MyTuple is
^
SyntaxError: EOL while scanning string literal
Explanation
In the above code, we have initialized an empty tuple ‘MyTuple’ and used if-else block to print if ‘MyTuple’ is empty or not. Inside the if block the print statement is used to print a string. But the string is expanded in multiple lines. And is not interpreted by the python interpreter. Thus the error is raised.
Solution
Try to keep the entire string within a single line.
Correct Code:
MyTuple = ()
if not MyTuple:
print("MyTuple is empty")
else:
print("MyTuple is not empty")
Output:
MyTuple is empty
Note: If you want the string to be initialized in multiple lines. Then use triple inverted commas either single(»’ Single quotes »’) or double(«»»Double quotes «»»») to enclose your string.
Example:
MyTuple = ()
if not MyTuple:
print("""MyTuple is
empty""")
else:
print("MyTuple is not empty")
Output:
MyTuple is
empty
Conclusion
We hope all the scenarios explained above will help you prevent the SyntaxError EOL while scanning String literal error. Another mistake you must avoid is using mismatched quotations. While closing strings, make sure that if it begins with single quotes, it must end with double quotes.
When supervisor is given a program with a command that doesn’t have a closing quote the following traceback is given. Issue is present in latest code checkin.
Impact: supervisord dies and its child processes started before the crash continue to run.
Test program:
[program:test]
command=cat'
Traceback observed:
Traceback (most recent call last):
File "supervisor/supervisord.py", line 375, in <module>
main()
File "supervisor/supervisord.py", line 360, in main
go(options)
File "supervisor/supervisord.py", line 370, in go
d.main()
File "supervisor/supervisord.py", line 83, in main
self.run()
File "supervisor/supervisord.py", line 100, in run
self.runforever()
File "supervisor/supervisord.py", line 252, in runforever
[ group.transition() for group in pgroups ]
File "/usr/lib/pymodules/python2.6/supervisor/process.py", line 680, in transition
proc.transition()
File "/usr/lib/pymodules/python2.6/supervisor/process.py", line 518, in transition
self.spawn()
File "/usr/lib/pymodules/python2.6/supervisor/process.py", line 218, in spawn
filename, argv = self.get_execv_args()
File "/usr/lib/pymodules/python2.6/supervisor/process.py", line 117, in get_execv_args
commandargs = shlex.split(self.config.command)
File "/usr/lib/python2.6/shlex.py", line 279, in split
return list(lex)
File "/usr/lib/python2.6/shlex.py", line 269, in next
token = self.get_token()
File "/usr/lib/python2.6/shlex.py", line 96, in get_token
raw = self.read_token()
File "/usr/lib/python2.6/shlex.py", line 172, in read_token
raise ValueError, "No closing quotation"
ValueError: No closing quotation
It’s a simple fix. I’m willing to submit a patch if you’d like.