Getting a SyntaxError when trying out "with" in Python3.6 - python

When attempting to open an existing text file (myfile.txt) with "with":
with open ('myfile.txt') as my_new_file:
I get the following error:
File "<ipython-input-263-06288b4ea914>", line 1
with open ('myfile.txt') as my_new_file:
^
SyntaxError: unexpected EOF while parsing
However, I am able to open the file using "open":
myfile = open('myfile.txt')
myfile.read()
'Hello, This is a text file\nThis is the second line\nThis is the third line'
Can someone point out what it is that I am doing wrong? Thanks!

Alls you need to do is do something after the colon. Finish the thought.
$ python -c "with open ('myfile.txt') as my_new_file:"
File "<string>", line 1
with open ('myfile.txt') as my_new_file:
^
SyntaxError: unexpected EOF while parsing
$ python -c "with open ('myfile.txt') as my_new_file: print(my_new_file.readlines())"
['hey\n', 'you\n']

An EOF error is an unexpected End Of File error where, the Python interpreter was expecting something part of the with statement on the next line.
For example:
with open ('myfile.txt') as my_new_file:
my_new_file.read()
is valid. Since the with statement has something in it, whereas:
with open ('myfile.txt') as my_new_file:
my_new_file.read()
Will return an error since there is nothing part of the with, when there should be at least one function in order to use the flow control.
If you have nothing to do then you should call pass. This has nothing to do with the file you want to read. Exactly the same effect can be made by using any statement that requires an indent, without the indent:
for i in range(100):
print('Hello')

Related

Trying to make a log function

I want to make a log function in my script but I don`t know why it gives me this error
File "c:/Users/x/x/x", line 33
log = open(f"Log/{realDate.strftime("%x")}.txt", "a")
^
SyntaxError: invalid syntax
Here`s the code that is causing the problem
realDate = datetime.datetime.now()
log = open(f"Log/{realDate.strftime("%x")}.txt", "a")
log.write("Hello Stackoverflow!")
log.close()
Can somebody please help me?
The problem is that you are trying to nest double quotes inside double quotes; f-strings don't allow that. You would need to change one or the other to another style of quotes. For example:
log = open(f'Log/{realDate.strftime("%x")}.txt', "a")
The main problem is that you aren't using a version of Python that supports f-strings. Make sure you are using Python 3.6 or later. (Update: Even in Python 3.6 or later, the identified location of the error can shift:
>>> f"{print("%x")}"
File "<stdin>", line 1
f"{print("%x")}"
^
SyntaxError: invalid syntax
>>> f"{print("x")}"
File "<stdin>", line 1
f"{print("x")}"
^
SyntaxError: invalid syntax
)

Importing a function from a .py file

I work in a .ipybn file, but i want to import a function from a .py file.
My code is:
from function1 import my_function
However, I get the following error:
SyntaxError: unexpected EOF while parsing
How can I fix this? P.s the files are in the same folder.
You get the error when the file's source code ended before all the blocks in it are completed. For example, if in your file is:
a = input("> ")
if a == 'yes':
print("hello")
As you can see, you tell the program to proceed to print before the if statement is completed.
unexpected EOF while parsing
It was able to open the file, but not parse the content correctly. I would start by checking indentations (spaces vs tabs, # of spaces), quotes, colons.
Something to try is executing python from the command line and importing there. That will eliminate iPython/Jupyter notebook as a variable.

How can I save this file txt?

I am trying to save a .txt file, previously cleaning from the previous .txt, but it is not saved and gives me an error in the final print [0]. I have been watching video and they do it.
I am using jupyter notebook. I'm sorry for my English it is low.
archivo = open ("salida_tweets.txt")
linea = archivo.readline()
tweet=linea.split(',"text":"')
s = len(tweet)
for i in range(1,s):
final = tweet[i].split('","truncated"')
print final [0]
File "<ipython-input-6-acef6c26b974>", line 9
print final [0]
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean
print(final [0])?
Your error is syntax error its because in the video you were watching they were using python2.7 but your current version is 3 so use
print(final[0])
In python3 print has been used as a function so this throws an error
Python has different access specifiers that specify the modes the file is open in
file=open("file_address.txt","w")
This will open file in write mode to write an string in a file you can simply use
file.write("anything")
"anything" will be written in the file
If you want to append the new information just open file in append mode
file=open("file_address.txt","a")

Call python script from command line, which exists in another directory

My project structure:
/Users/user1/home/bashScrpts/shellScript.sh
/Users/user1/home/pyScrpts/pyScrpt.py
From the shell script I want to call a function of pyScrpt.py
Content of
pyScrpt.py
def test():
return sys.argv[1]
shellScript.sh
DATA="testXX"
cmd="import sys;sys.path.insert(0, '/Users/user1/home/pyScrpts/pyScrpt');import pyScrpt; print pyScrpt.test()"
xy=$(python -c \'${cmd}\' "${DATA}")
echo $xy
Error I am getting:
File "<string>", line 1
'import
SyntaxError: EOL while scanning string literal
I don't see whats going wrong here.
Can anyone help me on this??
You just need to replace \' in \'${cmd}\' with double quotes "${cmd}".
Also you should add import sys to your pyScrpt.py.
I have never done this before, but i would hazard a guess that it may be due to the wrong function structure, it should read:
def test()
return sys.argv[1]

Python script, syntax error, invalid syntax

I have the following python script which i want to run..
However, it keeps showing the error message on my command prompt whenever i attempt to run the script.
Error message:
File "xor.py", line 9
File = open(sys.argv[1], 'rb').read<>
SyntaxError: Invalid Syntax
The following is the command i executed in cmd:
python xor.py sample_output.txt 'what would the secret be?'
The following is the script:
# xor.py
import sys
from itertools import cycle
file = open(sys.argv[1], 'rb').read()
string = sys.argv[2]
sys.stdout.write(''.join(chr(ord(x)^ord(y)) for (x,y) in zip(file, cycle(string))))
You are not running the code you are editing, instead you are running a different file than the one you edited.
This is because there is no syntax error in the code that you have provided. However, there is a syntax error in the code in the error message:
File = open(sys.argv[1], 'rb').read<>
This ends with <>, not with (). I assumed this to be a transcription error, but you say that the error message really appears like this, although the code does not.
Hence: You are running a different file than the one you are editing.
You have .read<> when you probably intended .read()
First of all, "file" is already reserved; that is built-in keyword so unable to set as the name of variable.
And second, do not use <> instead of (). incorrect in grammar.
The problems might be clearly solved if you code like:
fd = open(sys.argv[1], 'rb').read()

Categories