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

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

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

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

Q&A

解決済

2回答

4257閲覧

Python サーバにあるファイルを検索したい

person

総合スコア224

Python

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

0グッド

1クリップ

投稿2021/08/17 00:07

編集2021/08/17 00:54

Windowsで、サーバにあるファイルを検索、ダウンロードしたいです。

# shareフォルダ内のPDFファイル検索(半角スペース等がパスに使われていない前提) cmd = r"where \192.168.0.100\share\documents:*.pdf" outs, errs = mypopen(cmd, True, 5) print(outs)

(mypopen関数: Python3 subprocess.Popenのタイムアウト時のstdout, stderrについて

Pythonでsubprocessを使って検索しようとしたのですが、標準出力に期待するファイル名が入っておらず、
全く同じコマンドをコマンドプロンプトで実行してもファイル名が返って来ませんでした。

where \192.168.0.100\share\documents:*.pdf 情報: 与えられたパターンのファイルが見つかりませんでした。

ネットで調べてみると、「UNCパス非対応」みたいなものをいくつか見かけて、ネットワークドライブを割り当てることで使えるとのことでした。実際、ネットワークドライブを割り当てたら、コマンドプロンプトやpythonのsubprocessでファイルを出力する事ができました。

# shareフォルダ内のPDFファイル検索(半角スペース等がパスに使われていない前提) cmd = r"where Z:\documents:*.pdf"

ただ、ネットワークドライブを割り当てないで実現できればそうしたいです。
なにか方法ありますか?

subprocess(コマンド)を使わずに検索する方法など

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

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

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

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

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

guest

回答2

0

ベストアンサー

Windows標準のwhereコマンドを使おうとしているのであれば、

where \192.168.0.100\share\documents:*.pdf

は、「環境変数PATHに指定されたディレクトリ群の中に、\192.168.0.100\share\documents:*.pdfというファイルが有るか?」という意味になります。

おそらく、

CMD

1where /r \192.168.0.100\share\documents *.pdf

がやりたいことではないかと思います。参考:where /?

投稿2021/08/17 01:08

otn

総合スコア85901

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

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

person

2021/08/17 01:28

> where /r \192.168.0.100\share\documents *.pdf \192.168.0.100\share\documents\test.pdf \192.168.0.100\share\documents\test\test.pdf /rを付ければできるんですね。ありがとうございます。 再帰的な検索である(サブフォルダも検索してしまう)ことが少し気になりましたが、これも引数与えてあげれば制限できるのでしょうか。 where /? > /R 指定したパターンに一致するファイルを、指定したディレクトリから開始して再帰的に検索し表示します。
otn

2021/08/17 01:42 編集

直下だけ調べるなら dir で。 cmd /c dir /b \192.168.0.100\share\documents*.pdf とか。
person

2021/08/17 02:33

ありがとうございます。
guest

0

cmd = "where \192.168.0.100\share\documents:*.pdf"

バックスラッシュはエスケープする必要があるんで、

cmd = r"where \192.168.0.100\share\documents/*.pdf"

としときましょう。
それに加え、そのサーバとフォルダ共有の設定を行う必要があります

投稿2021/08/17 00:22

y_waiwai

総合スコア88042

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

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

person

2021/08/17 00:51 編集

> バックスラッシュはエスケープする必要がある コピペミスしました。申し訳ないです。 > サーバとフォルダ共有の設定を行う必要があります その設定によって、ネットワークドライブを割り当てずにPythonでサーバ内のファイル検索ってできますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問