いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

Pythonメモ-23 (gitpythonでgitを操作)(gitpython, ファイルの日付をコミット日時に)

概要

python から git を操作するライブラリ探していると以下を発見。

github.com

やりたいこと(一部愚痴)

一部の世界では、今でも何故かファイルの更新日付が(とても*100)重要です。。。

で、そういうところではリリースする際にソースからモジュールに至るまで全部更新日付で管理されます。

gitって、とても便利なのですが、取得するとファイルの更新日付が、その時の日時になってしまうのです。 私個人は、なんにも困らないのですが、そういう場所では困ることになります。 (ファイルの更新日付なんて、どうとでも変更できるのに・・・)

svnでは、これが設定でできてしまうのですね。なので、同じことを求められます。

TortoiseSVN の設定

んじゃ、git 使うなよってなるのですが、何故か git 使うってなってるところもあるのですね。。。。

てことで、gitからpullした後にコミット日時に調整したいってことになります。

スクリプト

で、ちょこっと調整するスクリプトです。

gist.github.com


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。

Pythonメモ-22 (ftputilでサクッとftp処理)(ftputil, a high-level interface to the ​ftplib module)

概要

python には標準で ftplib というモジュールが備わっていて、それを利用してftp処理が作れます。

21.13. ftplib — FTPプロトコルクライアント — Python 3.6.1 ドキュメント

が、このftplibは、ものすごく低レイヤなAPIになってて、実際作れるのですが面倒くさいです。

さくっと書きたいので、なんか便利なライブラリないかなって探したら、やっぱりありました。

pypi.python.org

インストール

インストールは、pip で一発です。

$ pip install ftputil

残念ながら、condaの方にはなかったです。

使い方(とりあえず get と put)

ftputilのページは

ftputil

で、とても分かりやすいドキュメントもあります。(英語ですがコードもあるので普通に分かります。)

Documentation – ftputil

自分がやりたかったのは、シンプルなgetとputだったので、以下のように書けばさくっと行けました。

ftp-get

import ftputil

# ---------------------------------------------
# FTPサーバーにログインしてダウンロード
# ---------------------------------------------
with ftputil.FTPHost(FTP_HOST, FTP_USER, FTP_PASS) as ftp:
    ftp.chdir(FTP_BASE_DIR)
    for host_file in ftp.listdir(ftp.curdir):
        ftp.download(host_file, f'{local_dir}/{host_file}')

ftp-put

import ftputil

# ---------------------------------------------
# FTPサーバーにログインしてアップロード
# ---------------------------------------------
with ftputil.FTPHost(FTP_HOST, FTP_USER, FTP_PASS) as ftp:
    ftp.chdir(FTP_UPLOAD_DIR)
    for local_file in os.listdir(local_dir):
        ftp.upload(f'{local_dir}/{local_file}', f'{local_file}')

withが使えて、osモジュールに似たメソッドがあって、downloadとuploadでサクッと行けるのがいいですね。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。

Pythonメモ-21 (PyCharmでgithubのprivate repoをcloneしようとしたらエラー)

概要

ちょっとハマったので、忘れないうちにメモメモ。

github にある プライベートリポジトリ を clone しようとしたら

Clone failed: repository 'https://github.com/xxxx/my-private-repo.git/' not found

ってエラーが出ました。

情報収集

stackoverflow で 以下の話題を発見。

stackoverflow.com

SSHでCloneする

どうも、httpsアクセスだと無理みたい。sshでcloneしたら行けた。

予め github に対して ssh できるか確認

$ ssh -T git@github.com

以下のように返ってきたらオッケイ。

Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.

githubへのsshの設定は、以下の記事がとても分かりやすいです。

qiita.com

Pycharm側の設定

次に、PyCharmの設定画面にて、cloneするときに ssh を利用するように設定。

以下の部分にチェック入れます。

f:id:gsf_zero1:20171009022910p:plain

あとは、いつもどおりPycharmの最初の画面で chekout from Version Control... で行けました。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。