質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2863閲覧

Python FTPアップロードファイルのパスの指定の仕方

shirokuma3109

総合スコア6

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/14 06:57

環境
windows10
Python3.8
です。
FTPでファイルをアップロードしたいんですが、上手くいきません。
ご教示願えますでしょうか?

FTPサーバーに接続
ftp = FTP("host","user","password")
ディレクトリの移動

ftp.cwd('290801')

'250 CWD command successful'

次に(実際にはバックスラッシュは¥(半角)でしたここに貼り付けたらバックスラッシュに)

with open("C:\Python\Python38-32\kyuyo\290801.pdf", "rb") as f:

... ftp.storlines("STOR C:\Python\Python38-32\kyuyo\290801.pdf", f)

エラーメッセージ

 Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument: 'C:\Python\Python38-32\kyuyo\x0290801.pdf'

となってしまいます。まずはコマンドラインで実行してみて。うまくいけば
、kyuyoフォルダー以下のpdfファイル群を取得して、アップロードできる仕組みを構築したと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

STORには、ディレクトリ名を含んだファイル名は指定出来ないはずです。
CWDでディレクトリを指定してから、STORを行えばよいかと。

投稿2020/02/14 13:31

otn

総合スコア85851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shirokuma3109

2020/02/18 02:53

ありがとうございます。STOR、ディレクト名を含むとダメなんですか。 CWDはサーバー側のディレクトリ指定ではないんですか? 結果、can110さんの方法でうまくいきました。
otn

2020/02/19 07:18

> STOR、ディレクト名を含むとダメなんですか。 だめです。 > CWDはサーバー側のディレクトリ指定ではないんですか? そうですよ。FTPプロトコルのコマンドなんだからサーバー側の操作に決まっています。
guest

0

ベストアンサー

ftp.cwd('290801')にてアップ先のディレクトリへの移動は終えているので
ftp.storlines("STOR C:\Python\Python38-32\kyuyo\290801.pdf", f)ではなく
ftp.storlines("STOR 290801.pdf", f)でよいでしょう。

投稿2020/02/14 13:40

can110

総合スコア38339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shirokuma3109

2020/02/18 02:49

ありがとうございます。やりたいことは実現できました。ftp.cwd('290081')はFTPサーバー側のディレクトリの指定ですよね? local側のパスを切らずにいきなりファイル名を指定しているのがちょっと疑問ですが、最近pythonを使い始めたのですが、パスの扱いがどうも苦手です(笑)
otn

2020/02/18 09:16

ローカル側は、f ですよ。 "STOR 290801.pdf" がリモート側です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問