例えば、WindowsローカルPCにて、Linuxサーバ等とファイルをやり取りするには、FTPソフトであるFFFTPやWinSCPなどを使用する方法があります。本記事では、そのようなソフトを使用するのではなくて、Pythonスクリプトで同様のことをする雛形コードを載せました。ライブラリ「Paramiko」を使用します。
タイトルにあるSSHは、Secure Shellの略で、リモートコンピュータと対話型の操作を暗号化する通信プロトコルのことです。そして、SFTPは、SSH File Transfer Protocolの略で、安全にファイルの送受信を行う通信プロトコルのことです。
■ライブラリのインストール
pip install paramiko
■本プログラム
import os
import glob
import math
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.size'] = 18
import matplotlib.cm as cm
import matplotlib.image as mpimg
import getpass
import paramiko
import codecs
HOST = '**.**.**.**'
PORT = **
myID = input('userid: ')
myPASS = getpass.getpass('password: ')
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(HOST, port = PORT,
username = myID, password = myPASS)
stdin, stdout, stderr = client.exec_command('hostname')
for line in stdout:
print(line)
sftp = client.open_sftp()
target_dir = '/home/kh/work/test_bash'
sftp.chdir(target_dir)
entries = sftp.listdir()
for i, e in enumerate(entries):
print(e)
if i == 10:
break
file_path = target_dir + '/data.csv'
with sftp.open(file_path, 'r') as f:
df = pd.read_csv(f,
sep = ',',
encoding = 'shift-jis',
)
pd.reset_option('display.max_rows')
df
file_path_list = glob.glob('picture_*.jpg')
new_file_list = []
for i, _file_path in enumerate(file_path_list, start = 1):
_file_name = os.path.basename(_file_path)
_new_file_name = f'zzz_{i}_{_file_name}'
sftp.get(_file_path, _new_file_name)
new_file_list.append(_new_file_name)
my_col = 3
my_row = math.ceil(len(file_path_list) / my_col)
fig = plt.figure(figsize = (16, 5), tight_layout = True)
for i, (_file_path, _legend) in enumerate(zip(new_file_list, legend_list)):
plt.subplot(my_row, my_col, i + 1)
plt.imshow(mpimg.imread(_file_path))
plt.title(legend_name + _legend)
ax = plt.gca()
ax.axes.xaxis.set_visivle(False)
ax.axes.yaxis.set_visivle(False)
fig.suptitle(my_title, fontsize = 32)
for f in new_file_list:
os.remove(f)
以上
<広告>
リンク
リンク