首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在远程服务器上读取SAS文件

在远程服务器上读取SAS文件
EN

Stack Overflow用户
提问于 2016-06-10 01:19:50
回答 1查看 1.5K关注 0票数 0

我需要通过Python在远程服务器上读取一些文件。我可以使用paramiko登录到这个远程服务器并获得一个文件对象(下面是变量remote_file )。问题是,这是一个SAS文件,因此编码不允许我一次读取一行。我需要使用SAS7BDAT包来读取这个文件。但是,sas7bdat包只接受文件路径或缓冲区作为输入。是否可以将文件对象(remote_file)转换为sas7bdat可以接受它?感谢你们的帮助!

我知道有一些解决方法可以解决这个问题(在远程服务器上安装Python,将远程服务器上的文件移动到本地机器上)。然而,我并不是在寻找这些解决方案。我在我的本地机器上安装了SAS,并且我对远程计算机有完全的写访问权。如果我可以将SAS7BDAT文件传输到远程桌面上的CSV,然后读取CSV文件,这也适用于我。(所有这些都应该通过Python完成)

使用paramiko软件包的

代码语言:javascript
复制
import paramiko
from contextlib import contextmanager
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_client.connect('host name', username='username', password='password')

sftp_client = ssh_client.open_sftp()
remote_file = sftp_client.open('file path','r')
for line in remote_file: # fails here
    print line # fails here

使用SAS7BDAT包

代码语言:javascript
复制
import sas7bdat
from sas7bdat import SAS7BDAT
f = SAS7BDAT('file_path_or_buffer')
EN

回答 1

Stack Overflow用户

发布于 2021-02-22 20:26:58

这对我起了作用:

代码语言:javascript
复制
import paramiko
import pandas as pd

host = "your_host.com"
port = your_port

transport = paramiko.Transport((host, port))
transport.connect(username = user_id, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)

with sftp.open(path_to_file, "r") as file:
    df = pd.read_sas(file, format ='sas7bdat',  encoding = 'latin1')

您可能需要调整编码,但latin1是SAS标准。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37738573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档