"valueerror: Embedded Null Character" When Using Open()
Solution 1:
It seems that you have problems with characters "\" and "/". If you use them in input - try to change one to another...
Solution 2:
Default encoding of files for Python 3.5 is 'utf-8'.
Default encoding of files for Windows tends to be something else.
If you intend to open two text files, you may try this:
import locale
locale.getdefaultlocale()
file1 = input("Enter the name of the first file: ")
file1_open = open(file1, encoding=locale.getdefaultlocale()[1])
file1_content = file1_open.read()
There should be some automatic detection in the standard library.
Otherwise you may create your own:
defguess_encoding(csv_file):
"""guess the encoding of the given file"""import io
import locale
with io.open(csv_file, "rb") as f:
data = f.read(5)
if data.startswith(b"\xEF\xBB\xBF"): # UTF-8 with a "BOM"return"utf-8-sig"elif data.startswith(b"\xFF\xFE") or data.startswith(b"\xFE\xFF"):
return"utf-16"else: # in Windows, guessing utf-8 doesn't work, so we have to trytry:
with io.open(csv_file, encoding="utf-8") as f:
preview = f.read(222222)
return"utf-8"except:
return locale.getdefaultlocale()[1]
and then
file1 = input("Enter the name of the first file: ")
file1_open = open(file1, encoding=guess_encoding(file1))
file1_content = file1_open.read()
Solution 3:
I got this error when copying a file to a folder that starts with a number. If you write the folder path with the double \ sign before the number, the problem will be solved.
Solution 4:
The problem is due to bytes data that needs to be decoded.
When you insert a variable into the interpreter, it displays it's repr attribute whereas print() takes the str (which are the same in this scenario) and ignores all unprintable characters such as: \x00, \x01 and replaces them with something else.
A solution is to "decode" file1_content (ignore bytes):
file1_content = ''.join(x for x in file1_content if x.isprintable())
Solution 5:
The first slash of the file path name throws the error.
Need Raw, r Raw string
FileHandle = open(r'..', encoding='utf8')
FilePath='C://FileName.txt' FilePath=r'C:/FileName.txt'
Post a Comment for ""valueerror: Embedded Null Character" When Using Open()"