.NET と Python メソッド対応表
個人的に欲しかったので作ってみた。
パス名取得
よく使うものを抜きだし、Linux の mono でもイケる。
ちなみに IronPython ならどちらでもいい。
ちなみに IronPython ならどちらでもいい。
目的 | Python | .NET Framework |
---|---|---|
自分のパスを得る | print __file__ | var ass = System.Reflection.Assembly.GetEntryAssembly(); System.Console.WriteLine(ass.Location); |
パス名連結 | os.path.join(dirname, filename) | System.IO.Path.Combine(dirname, filename); |
フルパスからディレクトリ名 | os.path.dirname(fullpath) | System.IO.Path.GetDirectoryName(fullpath); |
フルパスからファイル名 | os.path.basename(fullpath) | System.IO.Path.GetFileName(fullpath); |
フルパスを分割 | dirname, filename = os.path.split(fullpath) | - |
拡張子を得る(ドット付き) | os.path.splitext(filename)[1] | System.IO.Path.GetExtension(filename); |
絶対パスを得る | os.path.abspath(filename) | System.IO.Path.GetFullPath(filename); |
ファイル存在確認 | os.path.isfile(fullpath) | System.IO.File.Exists(fullpath); |
ディレクトリ存在確認 | os.path.isdir(fullpath) | System.IO.Directory.Exists(fullpath); |
ユーザー名 | os.environ["USERNAME"] | System.Environment.UserName |
ユーザーディレクトリ | os.path.expanduser("~") | - |
特殊ディレクトリ
System.Environment.GetFolderPath メソッドを利用する。
引数に System.Environment.SpecialFolder 列挙体を指定。
Environment.SpecialFolder 列挙体 (System)
Linux での Python は glib を利用する、Windows はシラネ。
引数に System.Environment.SpecialFolder 列挙体を指定。
Environment.SpecialFolder 列挙体 (System)
using System; class Sample { public static void Main() { // マイドキュメント Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Personal)); // アプリケーションフォルダ Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); /* これはできなかった... foreach (var env in Environment.SpecialFolder) { Console.WriteLine(Environment.GetFolderPath(env.ToString())); }*/ } }
Linux での Python は glib を利用する、Windows はシラネ。
#!/usr/bin/env python #-*- coding:utf-8 -*- import glib XDG_DEFAULT = ( "Desktop", "Documents", "Download", "Music", "Pictures", "Public", "Templates", "Videos" ) USER_CONF = ( glib.USER_DIRECTORY_DESKTOP, glib.USER_DIRECTORY_DOCUMENTS, glib.USER_DIRECTORY_DOWNLOAD, glib.USER_DIRECTORY_MUSIC, glib.USER_DIRECTORY_PICTURES, glib.USER_DIRECTORY_PUBLIC_SHARE, glib.USER_DIRECTORY_TEMPLATES, glib.USER_DIRECTORY_VIDEOS ) for i in range(len(XDG_DEFAULT)): print "%s: %s" % (XDG_DEFAULT[i], glib.get_user_special_dir(USER_CONF[i]))
Windows と Linux 振り分け
.NET にて Windows と Linux 共用で実用的なアプリを作るのは絶望的、文化の違いを吸収できない。
ですが遊び程度で共通ソースを作りたいなら以下のようにすれば違う部分を振り分けできる。
Python は書くまでもなくコンソールアプリなら大抵そのまま共用できる。
但し Windows でも 2.7 を使いましょう、Linux は依存関係で後数年は 2.7 のままだと思う。
ですが遊び程度で共通ソースを作りたいなら以下のようにすれば違う部分を振り分けできる。
using System; class Sample { public static void Main() { /* * Environment.OSVersion.ToString(); * Windows 7 => Microsoft Windows NT 6.1.7600.0 * Ubuntu 10.10 => Unix 2.6.35.28 **/ if (Environment.OSVersion.ToString().StartsWith("Microsoft")) { Console.WriteLine("Windows です"); } else if (Environment.OSVersion.ToString().StartsWith("Unix")) { Console.WriteLine("Linux です"); } } }GUI の共通化はヤメときましょう...
Python は書くまでもなくコンソールアプリなら大抵そのまま共用できる。
但し Windows でも 2.7 を使いましょう、Linux は依存関係で後数年は 2.7 のままだと思う。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.