Attributeerror: str object has no attribute write [SOLVED]
If you’re dealing with this “attributeerror: ‘str’ object has no attribute ‘write“ while working on a Python project, that’s alright; it has an easy solution. However, this error gives you …
itsourcecode.com hosts 170+ documented fixes for Python AttributeError messages: the most common runtime error after TypeError. From beginner-level confusion ('NoneType' object has no attribute 'split') to library-version pain (module 'numpy' has no attribute 'float' after NumPy 1.20+), this archive groups every documented error by root cause. Each post explains why the attribute is missing and gives 2–4 alternative fixes with code examples.
A Python AttributeError is raised when you try to access an attribute or method on an object that doesn’t have it. The error message always tells you both the object type and the missing attribute — for example AttributeError: 'list' object has no attribute 'items' means you called .items() on a list, but only dicts have that method. The error has two forms:
'X' object has no attribute 'Y' — the value at runtime isn’t the type you expectedmodule 'X' has no attribute 'Y' — the function/class you’re importing no longer exists in that version of the libraryprint(type(x)) on the line before the error. If the error says 'NoneType' object has no attribute 'split', the value is actually None — usually because a function returned nothing when you expected a string.pip show to see installed version. Compare to the version that had the attribute — often the API was deprecated and renamed. Common offenders: NumPy (np.float, np.int, np.long removed in 1.20+), pandas (.ix removed in 1.0+), Keras (keras.optimizers.Adam moved), Selenium (find_element_by_id removed in 4.0+).from numpy import float and numpy.float are different namespaces and different lookups. Many AttributeErrors come from a sub-package that moved or was renamed across versions.None, regex match failed, dict lookup returned None, BeautifulSoup didn’t find the element.items() on a list, .append() on a string, .read() on a dictdict.iteritems(), dict.has_key(), urllib.urlopentensorflow.contrib (removed), keras.optimizers.Adam (moved to tf.keras.optimizers)These errors come from runtime type confusion — your code expects one type but got another. Almost always fixable with a one-line type check or rewriting the previous line that returned the wrong value.
NoneType errors (14 posts) — the most common AttributeError class. A function/method returned None when you expected a string, list, or object.
str errors (10 posts) — calling list/dict methods on a string.
list errors (10 posts) — calling string/dict methods on a list.
dict errors (6 posts) — Python 2 methods removed in Python 3.
set, float, bytes errors
pandas had multiple API breaks between 0.x → 1.x → 2.x. Old code using .ix, .append(), or older indexing methods raises AttributeError on modern pandas.
NumPy 1.20 deprecated and removed many type aliases (np.float, np.int, np.long, np.bool). Code from 2019 or earlier hits these errors immediately on modern NumPy.
TensorFlow 2.x reorganized the API: tensorflow.contrib was removed, optimizers moved into tf.keras.optimizers, and many sub-modules were merged or deprecated.
Selenium 4 removed the find_element_by_* methods. Use find_element(By.X, ...) instead.
These guides were rewritten or expanded in 2026 with current library versions, minimal reproductions, and 3–4 alternative fixes each.
with on non-context-managerAttributeError says “this object exists but doesn’t have the attribute/method you tried to access.” TypeError says “the value’s type is wrong for this operation entirely.” For example, None.split() raises AttributeError (NoneType has no .split); None + 5 raises TypeError (you can’t add NoneType to int). Both are runtime errors caused by Python’s dynamic typing, but they fail at different points.
The variable is None when you expected it to be an object. Most common causes: (1) A function returned nothing (no return statement, or fell off the end of an if). (2) dict.get(key) when the key isn’t present (returns None by default). (3) BeautifulSoup’s .find() returned None because the element doesn’t exist. (4) A database query returned no rows. Fix by adding a None check: if x is not None: x.do_thing() — or fix the upstream code that’s producing None.
NumPy 1.20 (released January 2021) deprecated np.float, np.int, np.long, np.bool, and np.object. NumPy 1.24 (Dec 2022) removed them entirely. Replace them with: np.float64, np.int64, Python’s built-in float/int/bool, or downgrade to NumPy < 1.20 if you can't change the code.
.ix was deprecated in pandas 0.20 and removed in 1.0 (January 2020). It was ambiguous because it accepted both labels and positions. Replace with .loc (label-based) or .iloc (integer position-based). For df.ix[5, 'col'], use df.loc[5, 'col'] if 5 is a row label, or df.iloc[5, df.columns.get_loc('col')] if 5 is a position.
You’re running Python 3 code that used Python 2 methods. In Python 3, dict.iteritems() became dict.items(), and dict.has_key(k) became k in dict. Run a Python 2 → 3 conversion with 2to3 tool, or manually update: for k, v in d.iteritems() → for k, v in d.items(); if d.has_key('x') → if 'x' in d.
Selenium 4 (October 2021) removed all the find_element_by_* methods. Replace driver.find_element_by_class_name('foo') with driver.find_element(By.CLASS_NAME, 'foo'). Don’t forget from selenium.webdriver.common.by import By. The same applies to find_element_by_id, find_element_by_xpath, find_element_by_css_selector, etc.
Generally no — AttributeError usually indicates a real bug in your code (wrong type, wrong API). Catching it hides the bug. The legitimate exception is duck typing patterns where you genuinely want to handle “this might or might not have method X”: try: x.close() except AttributeError: pass. But for normal code, fix the type mismatch instead of catching the error.
New posts are added weekly as we encounter errors in real projects. Existing posts are revised every 6–12 months when major library versions ship (NumPy 2.x, pandas 2.x, Selenium 4 → 5, TensorFlow versions). This page was last refreshed in May 2026.
AttributeError is one of 5 hubs in our Python error reference cluster — 765+ documented fixes total. If your error isn’t about a missing attribute, jump to the right hub below:
This AttributeError reference has been built since 2015 by PIES Information Technology Solutions in Binalbagan, Negros Occidental, Philippines. Every post in the collection started as a real error encountered in production code — by us, by our clients, or by readers who emailed us with their tracebacks. Used by 12,000+ Python developers monthly across the Philippines, India, the United States, and beyond. If your AttributeError isn’t here, send the full traceback to our contact form and we’ll add it.
If you’re dealing with this “attributeerror: ‘str’ object has no attribute ‘write“ while working on a Python project, that’s alright; it has an easy solution. However, this error gives you …
What do you think is the cause of the error attributeerror: module ‘urllib’ has no attribute ‘urlopen’ in Python? To answer your question or clarify your thoughts, read through the …
In this article, we will discuss how to solve the attributeerror dataframe object has no attribute reshape, what are the cause of the error and why this error occurs. Why …
In this article, we will discuss solutions in attributeerror: module ‘TensorFlow’ has no attribute ‘reset_default_graph’. We will also look at the causes, and briefly discuss this error. Let’s get started! …
The “attributeerror: module ‘jinja2’ has no attribute ‘contextfilter‘” is an error message in Python. That is raised when you are trying to access the contextfilter decorator from the Jinja2 templating …
In this article, we will discuss solutions in attributeerror module pil.image has no attribute resampling. We will also look at the causes, and briefly discuss this error. Attributeerror: module ‘pil.image’ …
What’ll you do if you encounter an error in Python that states attributeerror numpy ndarray object has no attribute head? Our best advice is “don’t panic.” In this article, we …
In this article, we will look at solutions of attributeerror: module ‘numpy’ has no attribute ‘bool’. Also, we will know the causes of why this error possibly occurs. Before we …
The “attributeerror: ‘dataframe’ object has no attribute ‘concat‘” error message usually occurs when the concat() function is called on a DataFrame object, but it doesn’t have that method. In addition …
As a developer, you cannot prevent running into errors like attributeerror: ‘io.textiowrapper’ object has no attribute ‘split’. Hence, it is crucial to have knowledge and understanding of these errors. In …
One of the most common errors that Python programmers encounter is the AttributeError: ‘list’ object has no attribute ‘values’. In this article, we will discuss the solutions on how to …
The “attributeerror: ‘api’ object has no attribute ‘search‘” is an error message that typically occurs when you are using Python. This error occurs due to an incompatible version of the …
Are you facing the error AttributeError: module ‘aiobotocore’ has no attribute ‘aiosession’? Well, you are not alone. Hence in this article, we will find solutions, the causes, and a brief …