Python: AttributeError: объект 'NoneType' не имеет атрибута 'rfind'
Я пытаюсь определить расширение файла, используя os.path.splitext
вот мой код:
for emailid in msgs:
typ, s = mail.fetch(emailid, "(RFC822)")
m = email.message_from_string(s[0][1])
result = re.findall(pattern,str)
if result:
for part in m.walk():
filename = part.get_filename()
if filename:
extension = os.path.splitext(fileName)
if extension[1][1:] == 'csv':
### Process into a dataframe
df = pd.read_csv(StringIO(filename))
Вот ошибка чтения из IPython:
#### Begin error Message #####
AttributeError Traceback (most recent call last)
<ipython-input-83-71fabd157c43> in <module>()
40 if filename:
41 print type(filename)
---> 42 extension = os.path.splitext(fileName)
43 if extension[1][1:] == 'csv':
44 ### Process into a dataframe
C:\Anaconda2\lib\ntpath.pyc in splitext(p)
198
199 def splitext(p):
--> 200 return genericpath._splitext(p, sep, altsep, extsep)
201 splitext.__doc__ = genericpath._splitext.__doc__
202
C:\Anaconda2\lib\genericpath.pyc in _splitext(p, sep, altsep, extsep)
97 leading dots. Returns "(root, ext)"; ext may be empty."""
98
---> 99 sepIndex = p.rfind(sep)
100 if altsep:
101 altsepIndex = p.rfind(altsep)
AttributeError: 'NoneType' object has no attribute 'rfind'
#### End Error message #####
NoneType должен означать, что я ничего не передаю, когда я печатаю тип (имя файла), я получаю:
Как передать файл, чтобы я мог определить расширение, а затем создать фрейм данных? мне нужно сохранить на диск
это будет для сценария синтаксического анализа, который регулярно отправляется по расписанию csv'у, и, следовательно, регулярное выражение для определения правила, которому нужно следовать.
1 ответ
В extension = os.path.splitext(fileName)
вы используете переменную fileName
, вместо filename
, Python чувствителен к регистру, так что это разные переменные. Очевидно, fileName
в другом месте установлено значение None, и изменение этого экземпляра на filename
должен исправить эту ошибку.