LoginSignup
1
3

More than 3 years have passed since last update.

[Python] 処理ファイルをGUIから選択する方法(絶対パス版)

Posted at

[Python]Windowsサーバー内のファイルダイアログを出してファイルを指定し、それをローカルにコピーする方法

pip install pathlib tkinter
1. Windowsサーバーのパス名を扱えるようにするため、pathlibパッケージ
2. ダイアログボックスを出させるため、tkinterパッケージ
を、あらかじめインストールしておく。

Windowsサーバー内のダイアログを開き、ファイルを選んで置きたい場所にコピー(絶対パス指定).py
# モジュールのインポート
import os, tkinter, tkinter.filedialog, tkinter.messagebox
import pathlib
import shutil

# pathlib.WindowsPath(r の rオプション によって、わざわざ \\ と書かなくてよくなる。
# これで、WindowsPCであれば ローカル/社内サーバー に関わらず、絶対パスをそのまま指定して通用する。
# ダイアログを開いたときに見せたい場所
sDir = pathlib.WindowsPath(r'\\Server-01\管理\日報')
# 貼り付けたい場所
dDir = pathlib.WindowsPath(r'C:\Users\UserName\Desktop\週次処理')

# ファイル選択ダイアログの表示
root = tkinter.Tk()
root.withdraw()

# 選びたいファイル種類を指定する
fTyp = [("エクセルファイル","*.xls?")]
copyfile = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = sDir)

# 最後にコピーして終了
shutil.copy2(copyfile, dDir)

[処理環境]
・Windows8.1 64bit
・Python3.7.4

【参考】Qiita: Python:処理ファイルをGUIから選択する方法
 を参考にしました。@chanmaruさんのソースが相対パス仕様だったのを、絶対パス仕様にしたのが今回の記事です。
 どうしても絶対パスの方が使いやすかったので、相対パスから絶対パスに変えたのですが、エラーの連続で苦心しました。
 「pathlib.WindowsPath(r の rオプション によって、わざわざ \ と書かなくてよくなる」ということが分かってから、やっと解けました。
 ExcelVBAのやり方に比べて、どれだけラクか・・・。@chanmaruさんには感謝しかありません😄

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3