如何在Azure虚拟机运行Python脚本并读写本地CSV?若不可行,Azure云存储方案?
我来帮你梳理下这个问题的解决方案,分两种场景来具体说明:
直接让Azure VM访问本地电脑CSV文件的方法(临时调试适用)
首先明确:Azure虚拟机是运行在云端的独立服务器,默认没法直接访问你本地电脑的文件系统。但可以通过网络共享的方式实现,适合临时测试用,步骤如下:
- 第一步:在本地电脑共享CSV所在文件夹
- Windows:右键目标文件夹 → 属性 → 共享 → 高级共享,勾选「共享此文件夹」,配置好可读/可写的权限
- macOS/Linux:开启SMB共享服务,将目标文件夹加入共享列表,设置访问账户权限
- 第二步:确保VM和本地电脑在同一可访问网络
- 推荐用Azure点到点VPN连接本地和VM网络;如果只是临时测试,也可以开放本地防火墙的SMB端口(445),用VM的公共IP访问,但这种方式安全性低,不适合生产
- 第三步:在Azure VM里挂载本地共享文件夹
- Windows VM:打开命令提示符,运行
net use Z: \\本地电脑IP\共享文件夹名 /user:本地电脑用户名 密码,挂载后就能用Z:\xxx.csv访问文件 - Linux VM:先安装cifs-utils,再运行
sudo mount -t cifs //本地电脑IP/共享文件夹名 /mnt/local-share -o username=本地电脑用户名,password=密码,挂载后用/mnt/local-share/xxx.csv访问
- Windows VM:打开命令提示符,运行
⚠️ 注意:这种方式依赖网络稳定性,且有安全风险,仅适合临时调试,不建议生产环境使用。
用Azure云存储解决(生产级推荐)
如果直接访问本地文件不可行(比如网络限制、安全合规要求),Azure云存储是更可靠的方案,主要有两种选择:
方案1:Azure Blob存储(适合批量数据处理)
Blob存储是Azure专门用于存储非结构化数据的服务,适配CSV这类文件的存储与批量处理,步骤如下:
- 在Azure门户创建存储账户,再在账户内创建一个Blob容器(比如命名为
csv-data) - 将本地CSV文件上传到容器(可用Azure门户、Azure Storage Explorer工具,或Azure CLI命令)
- 在Azure VM里安装Python的Blob SDK:
pip install azure-storage-blob - 修改Python脚本,直接从Blob存储读写文件,示例代码:
from azure.storage.blob import BlobServiceClient import pandas as pd # 替换为你的存储账户连接字符串 connect_str = "你的存储账户连接字符串" blob_service_client = BlobServiceClient.from_connection_string(connect_str) # 读取Blob中的CSV文件 container_client = blob_service_client.get_container_client("csv-data") blob_client = container_client.get_blob_client("input.csv") with open("temp_input.csv", "wb") as f: f.write(blob_client.download_blob().readall()) # 处理CSV(以pandas为例) df = pd.read_csv("temp_input.csv") # 你的业务处理逻辑... df.to_csv("temp_output.csv", index=False) # 将处理后的文件上传回Blob output_blob_client = container_client.get_blob_client("output.csv") with open("temp_output.csv", "rb") as f: output_blob_client.upload_blob(f, overwrite=True)
方案2:Azure Files存储(适合兼容现有脚本)
如果你希望脚本不用大幅修改,仍像操作本地文件一样读写,Azure Files可以创建云文件共享,直接挂载到VM中,步骤如下:
- 在Azure门户创建存储账户(可与Blob共用,也可单独创建),再创建文件共享(比如命名为
csv-share) - 将本地CSV上传到文件共享(可用门户、Storage Explorer或CLI)
- 在Azure VM里挂载该共享:
- Windows VM:运行
net use Z: \\存储账户名.file.core.windows.net\csv-share /user:AZURE\存储账户名 存储账户密钥 - Linux VM:安装cifs-utils后,运行
sudo mount -t cifs //存储账户名.file.core.windows.net/csv-share /mnt/azure-files -o username=存储账户名,password=存储账户密钥,serverino
- Windows VM:运行
- 挂载完成后,脚本直接用挂载路径(比如
Z:\input.csv或/mnt/azure-files/input.csv)读写文件,和操作本地文件完全一致,无需大量修改代码
总结
- 临时测试、小文件场景:可采用本地SMB共享,但需注意网络稳定性与安全风险
- 生产环境、稳定需求:优先选择Azure Blob或Files存储,其中Blob适合批量数据处理,Files适合兼容现有脚本的场景
内容的提问来源于stack exchange,提问作者Pepin Peng
相关产品推荐
相关产品推荐

