You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下Python CSV下载显示代码第23行语法错误求助

问题:Python代码第23行语法错误,无法下载CSV文件

在Linux系统中运行以下Python代码下载并显示CSV文件时,第23行出现语法错误。出于隐私考虑,已移除认证相关信息:

import csv
import urllib.request


# URL of the CSV file
url = 'http://165.143.226.108/groups/IPNET-Localpeering/topN/IPNET-Localpeering/IPNET-Localpeering.csv'



# Proxy server details


# Create a password manager and add the username and password
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, url, username, password)

# Create an authentication handler for the proxy server
proxy_auth_handler = urllib.request.HTTPBasicAuthHandler()
proxy_auth_handler.add_password('realm', f'http://{proxy_server}:{proxy_port}',
                                proxy_username, proxy_password)

# Create a proxy handler and opener
proxy_handler = urllib.request.ProxyHandler({'http': f'http://{proxy_server}:{proxy_port}',
                                             'https': f'https://{proxy_server}:{proxy_port}'})
opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler, urllib.request.HTTPHandler)

# Install the opener
urllib.request.install_opener(opener)

# Download the CSV file from the URL
response = urllib.request.urlopen(url)
data = response.read().decode('utf-8')

# Parse the CSV data
csv_data = csv.reader(data.splitlines())

# Print each row of the CSV file
for row in csv_data:
    print(row)

错误原因分析

第23行使用了f-string格式化语法(f'http://{proxy_server}:{proxy_port}'),该语法仅在Python 3.6及以上版本支持。如果你的Linux系统默认Python版本低于3.6,运行时就会触发语法错误。另外,代码中用到的username、password、proxy_server等变量未定义(你移除了隐私信息),但这属于运行时错误,不是语法错误,所以核心问题是f-string的版本兼容性。

修复方案

方案1:升级Python版本到3.6+

在Linux终端执行以下命令查看当前Python版本:

python --version
# 或
python3 --version

如果版本低于3.6,可通过包管理器升级(以Ubuntu为例):

sudo apt update
sudo apt install python3.8

方案2:替换f-string为兼容的格式化方式

将所有f-string替换为str.format()语法,适配低版本Python:

# 原代码第23-24行替换为:
proxy_auth_handler.add_password('realm', 'http://{}:{}'.format(proxy_server, proxy_port),
                                proxy_username, proxy_password)

# 原代码第27-28行替换为:
proxy_handler = urllib.request.ProxyHandler({'http': 'http://{}:{}'.format(proxy_server, proxy_port),
                                             'https': 'https://{}:{}'.format(proxy_server, proxy_port)})

方案3:补充缺失的变量定义

在代码中添加已移除的认证和代理变量定义,例如:

# 补充认证信息
username = '你的用户名'
password = '你的密码'

# 补充代理服务器信息
proxy_server = '代理服务器地址'
proxy_port = '代理端口'
proxy_username = '代理用户名'
proxy_password = '代理密码'

内容的提问来源于stack exchange,提问作者Otshepeng Ditshego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21