Python’s standard-library configparser module reads and writes INI-style configuration files. Use read_file() when a file is required, read() when files are optional or layered, and the typed getters when a setting must be an integer, float, or boolean.
For example, a file named app.ini can hold defaults and application settings:
[DEFAULT]
log_level = INFO
[database]
host = localhost
port = 5432
enabled = yes
Read a required configuration file
Open the file in text mode and pass its handle to read_file(). Unlike read(), this makes a missing or unreadable file an explicit error rather than silently leaving the parser empty.
import configparser
config = configparser.ConfigParser()
with open("app.ini", encoding="utf-8") as file:
config.read_file(file)
host = config["database"]["host"]
print(host)
The example prints localhost. The standard-library parser models a configuration language with a structure similar to Windows INI files; see the Python configparser reference.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Use read() for optional files and overrides
read() accepts one path or an iterable of paths, ignores files it cannot open, and returns the filenames it successfully parsed. It is useful when configuration files are optional. Files are applied in order: later files override conflicting values while earlier values that are not replaced remain available.
import configparser
config = configparser.ConfigParser()
loaded = config.read(["defaults.ini", "local.ini"], encoding="utf-8")
print("Loaded:", loaded)
if not loaded:
print("No configuration file was found")
If at least one file is required, do not treat an empty result from read() as success; use read_file() and handle its file or parsing exceptions.
Retrieve strings and convert values
Values are strings when read. Access an option with mapping syntax or get(), and use the typed getters where your program needs a non-string value.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
host = config["database"]["host"]
port = config.getint("database", "port")
enabled = config.getboolean("database", "enabled")
ratio = config.getfloat("service", "ratio", fallback=1.0)
getint(), getfloat(), and getboolean() convert common types. Boolean values accept conventional spellings such as yes/no, true/false, on/off, and 1/0. For an application-specific type, register a converter when constructing the parser; its method becomes available as a getter.
config = configparser.ConfigParser(converters={
"list": lambda value: [item.strip() for item in value.split(",")]
})
# In the file: allowed_hosts = example.com, api.example.com
hosts = config.getlist("security", "allowed_hosts")
A missing section or option normally raises an error. If absence is expected, provide fallback= to the relevant getter, such as config.get("service", "name", fallback="default"). A fallback is not a substitute for validating values that are present but malformed.
Understand DEFAULT values and interpolation
Options in [DEFAULT] are inherited by named sections. They can be read through a section, but the default section is not an ordinary named section that appears among the parser’s sections.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
[DEFAULT]
region = us-east
[storage]
bucket = uploads
config["storage"]["region"] returns us-east, even though region is not written inside [storage].
Basic interpolation is on by default
Basic interpolation uses %(name)s references, resolved from the same section or its defaults. A literal percent sign must be written as %%.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
[paths]
root = /srv/app
logs = %(root)s/logs
percent = 80%%
Use raw=True on an individual getter when you need the uninterpolated text, or set interpolation=None when constructing the parser to disable interpolation throughout. For cross-section references and the ${section:option} syntax, use configparser.ExtendedInterpolation().
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
config = configparser.ConfigParser(
interpolation=configparser.ExtendedInterpolation()
)
Set options and write the configuration
Set values as strings on an existing section, then pass a text-mode file object to write(). The parser serializes its current representation; it is not a formatting-preserving editor and does not promise to retain the original comment layout.
config["database"]["host"] = "db.internal"
config["database"]["port"] = "5433"
with open("app.ini", "w", encoding="utf-8") as file:
config.write(file)
To create a section before setting its values, use config.add_section("database") unless it already exists. A write/read round trip is intended, but serialization can fail for representations that cannot be parsed accurately: Python 3.14 added InvalidWriteError for this case.
Options and behaviors that commonly surprise developers
Duplicate sections and options
strict=True is the default. Duplicate sections or options within one input source, such as one file, string, or dictionary, raise an error rather than silently overriding one another. This does not prevent deliberate layering across separate files: later files passed to read() can override earlier ones.
Free tools Windows power users keep installed
One-click scans. No signup required.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Option names are lowercased by default
Option names are normalized to lowercase by optionxform(). If a format you control requires case-sensitive names, customize that transformation before reading; do so only when you need that behavior, since it changes how options are looked up.
Comments and multiline values
Full-line comment prefixes are recognized, but inline comments are not enabled by default. Enabling inline comment prefixes can make those characters unavailable as literal parts of values. Multiline values depend on indentation; blank-line handling is affected by empty_lines_in_values.
Version-specific parsing and writing
Check the Python version you support before relying on newer behavior. Python 3.13 added allow_unnamed_section and a MultilineContinuationError case. Python 3.14 added InvalidWriteError for unsafe serialization.
Common errors and fixes
- The parser is empty after reading:
read()could not open any requested files. Check the path and permissions; useread_file()if absence should fail immediately. NoSectionErrororNoOptionError: confirm the section and option spelling, remember that option names are lowercased by default, or supply a suitable fallback if omission is valid.DuplicateSectionErrororDuplicateOptionError: remove duplicates from the same input source or deliberately split defaults and overrides across separate files.- Interpolation error: check that referenced options exist and that literal percent signs are doubled. Use
raw=Truefor one raw read or disable interpolation if the file’s values are not interpolation expressions. - Conversion error from a typed getter: check the value’s spelling and format; use a string getter to inspect it, then correct the configuration or define the intended custom converter.
- Failure while writing: ensure the destination is open in text mode and investigate whether the parser representation can be read back, especially on Python 3.14 and later.
Choosing ConfigParser for an application
configparser is a good fit when your application needs section-based INI configuration, defaults, interpolation, and simple type conversion. It is not a full schema validator: applications should still validate required settings, ranges, and relationships after parsing. If you need a different configuration format, the Python documentation also points to tomllib and TOML, a well-specified format designed as an improvement over INI.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Do not parse unbounded untrusted configuration input casually. The Python reference warns that parsing can consume excessive CPU and memory; limit input size when the source is not trusted.
Or skip the browser setup
This is a separate tool for website captures, not a replacement for Python configuration parsing. If your workflow also needs a webpage screenshot, one GET request returns an image or PDF:
Quick Recap
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation. ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify page verdict and billing status in headers. Its MCP server gives AI agents tools for screenshots, page information, and PDFs. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Learn about ScreenshotNeo or sign up for 1,000 free screenshots a month, with no card required.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




