Premise・What I want to achieve
I'm going to use Python to read the GML file.
Error Message
Traceback (most recent call last):
File "firstgml.py", line 9, in <module>
G = nx.read_gml(gml_path)
File "<decorator-gen-434>", line 2, in read_gml
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/utils/decorators.py", line 227, in _open_file
result = func_to_be_decorated(*new_args, **kwargs)
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/readwrite/gml.py", line 218, in read_gml
G = parse_gml_lines(filter_lines(path), label, destringizer)
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/readwrite/gml.py", line 398, in parse_gml_lines
graph = parse_graph()
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/readwrite/gml.py", line 387, in parse_graph
curr_token, dct = parse_kv(next(tokens))
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/readwrite/gml.py", line 315, in tokenize
for line in lines:
File "/Users/XXXX/.pyenv/versions/3.8.5/lib/python3.8/site-packages/networkx/readwrite/gml.py", line 209, in filter_lines
line = line.decode('ascii')
AttributeError: 'int' object has no attribute 'decode'
Corresponding source code
import numpy as np
import networkx as nx
gml_path = "XXXX.gml"
gml_path = gml_path.encode("utf-8")
G = nx.read_gml(gml_path)
X = np.array(nx.to_numpy_matrix(G))
print(nx.is_directed(G))
What I tried
I changed the encoding character code to ascii and so on, but I get an error.
Supplementary information (FW / tool version, etc.)
Python 3.85
networkx 2.1
numpy 1.19.2
This is the part that is wrong.
You shouldn't be encoding the name of the file.
read_gmltakes a filename or a filehandle. When you pass the encodedgml_pathit thinks it is an open file, so it goes to iterate over it. And when it goes to doline.decode('ascii'), thelinevariable containsb'X'which transfers to the number 88.The error you were getting before:
"NetworkXError: input is not ASCII-encoded"is because your file is not properly encoded, not your path to file. What you should do is remove this linegml_path = gml_path.encode("utf-8"), and encode your GML file, either with another tool, or using Python.