Le fait que mon script personnel s'exécute sur python2.7 était un problème, j'ai donc essayé d'utiliser python3. Le travail de cette année était sûr, et je l'ai fait, alors j'aimerais coder au cours de l'année.
Conditions préalables:
Puisqu'il est "dans mon cas" jusqu'au dernier, ça change au cas par cas en fonction du style d'écriture et des fonctions utilisées, et ce n'est pas une histoire que j'en ai fait un bon style d'écriture comme python3 au niveau où ça a fonctionné sans problèmes.
Chaque fonction | Avec ou sans changement de code | Remarques |
---|---|---|
Lire le fichier ligne par ligne | Changement | a_file.xreadlines→a_file.Pour lire les lignes(Voir ci-dessous) |
Référence du système de fichiers(ls -Comme R) | Tel quel | os.chemin et os.Utiliser listdir |
Opération de chaîne de caractères japonais | Changement | La spécification de codage est supprimée(Voir ci-dessous) |
Recevoir des arguments japonais | Changement | La spécification de codage est supprimée(Voir ci-dessous) |
Sortie de chaîne | Changement | Mec célèbre(Voir ci-dessous) |
Remplacement de la chaîne | Changement | La spécification de codage est supprimée(Voir ci-dessous) |
Formatage de chaîne | Tel quel | +Utilisation de la concaténation de chaînes de caractères |
Sortie de fichier texte | Tel quel | codec.utilisation ouverte |
bottle(serveur Web) | Tel quel | Réinsérez la bouteille |
Obtenir la taille de l'image avec PIL | Tel quel | J'ai remis l'oreiller dedans, mais c'est un peu gênant(Voir ci-dessous) |
Obtenir la médiane avec numpy | Tel quel | J'ai réinséré numpy, mais c'est un peu gênant(Voir ci-dessous) |
dormir à l'heure | Tel quel | |
ionice avec psutil | Tel quel | réinsérer psutil |
Obtenir l'heure actuelle | Tel quel | |
Exécuter la commande système avec os | Tel quel | Cependant, si vous modifiez l'encodage en envoyant et en recevant des arguments, vous n'avez pas besoin de le spécifier |
Affichage de la boîte de dialogue(GUI) | Changement | Utilisez MessageBoxA de win32api de ctypes(Voir ci-dessous) |
Celui que vous voyez souvent.
# before
print "hoge"
#after
print("hoge")
Je n'ai plus besoin de sorts mystérieux.
# before
import sys
reload(sys)
sys.setdefaultencoding("cp932")
unicode(hoge_string, encoding='cp932')
#after
#Je n'ai plus besoin de sorts!Cependant, si vous l'écrivez, la manière d'écrire les deux premières lignes changera
import importlib
importlib.reload(sys)
sys.setdefaultencoding('cp932')
#Vous n'avez même pas besoin de spécifier chaque variable de chaîne
hoge_string
Utilisez MessageBoxW au lieu de MessageBoxA. Référence: Appel MessageBox (API Windows) à partir de Python 3
# before
def win_alert(mes):
user32 = windll.user32
user32.MessageBoxA(
0,
mes,
"info",
0x00000040)
#after
def win_alert(mes):
user32 = windll.user32
user32.MessageBoxW(
0,
mes,
"info",
0x00000040)
xreadlines Je n'ai pas pu trouver la documentation officielle, mais xreadlines semble être obsolète dans python3. Cependant, comme il y a des readlines, j'ai pris x.
# before
for line in itr.xreadlines():
#after
for line in itr.readlines():
Référence: [Portage du code vers Python 3 à l'aide de 2to3 --Dive Into Python 3 version japonaise](http://diveintopython3-ja.rdy.jp/porting-code-to-python-3-with-2to3. html)
Quand je fais "pip install oreiller" sur les fenêtres, la compilation s'exécute au moment de l'installation et je me fâche contre zlib. Quoi qu'il en soit, j'ai un binaire pré-construit et je l'ai installé.
#Ouvrez ce qui suit dans votre navigateur"Pillow‑3.4.2‑cp36‑cp36m‑win_amd64.whl"DL
# http://www.lfd.uci.edu/~gohlke/pythonlibs/
$ pip install Pillow‑3.4.2‑cp36‑cp36m‑win_amd64.whl
Référence: [Impossible d'installer Pillow pour Python 3.x sous Windows --Zlib est requis --Stack Overflow](http://stackoverflow.com/questions/38733647/cant-install-pillow-for-python-3-x- in-windows-zlib-is-required) Référence: erreur python --Zlib lors de l'installation de Pillow --Stack Overflow Référence: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow
En fonction de l'erreur au moment de l'installation, j'ai installé "Visual C ++ Build Tools" et l'ai ré-exécuté.
Même lors de l'utilisation de python2, le serveur Web de bouteille a été automatiquement démarré sans afficher la console. Mais d'une manière ou d'une autre, pythonw.exe ne démarre pas le script de la bouteille ... Bien sûr, lorsque vous le démarrez avec python.exe, la console s'affiche ... (J'ai oublié de faire une sauvegarde des paramètres du planificateur de tâches et comment cela a été réalisé ...)
Ainsi, après une recherche rapide, si vous sélectionnez "Exécuter, que l'utilisateur soit connecté ou non" dans le planificateur de tâches, il ne sera pas affiché. J'ai pu le faire, mais pourquoi pas?
#Paramètres du planificateur de tâches
[Général]→[Options de sécurité]
"Exécuter indépendamment du fait que l'utilisateur soit connecté ou non"
[opération]→[programme/scénario]
"C:\hoge\Python36\python.exe"
[opération]→[Ajouter un argument]
C:/hoge/bottle_sample.py
Remarque: [Le fichier de commandes exécuté à partir du planificateur de tâches dans Windows 7 n'apparaît pas à l'écran. --Microsoft Community](https://answers.microsoft.com/en-us/windows/forum/windows_7-winapps/windows7%E3%81%A7%E3%82%BF%E3%82%B9%E3%82 % AF / ccff2c2f-5a0e-4f3d-ae81-9dff3e36fc3c)
Peut-être parce que la cible était de petites fonctions simples, j'ai pu le faire en une heure ou deux lors de l'enquête, donc c'était relativement facile à déplacer. Cependant, je ne sais pas comment l'écrire correctement en python3, donc je dois l'étudier correctement ...
Surtout pour ceux qui ont du mal en japonais sous windows, il est indispensable de passer à python3. (Vous n'avez plus besoin d'utiliser cp932 ou de code de caractère mystérieux, ni de vous soucier de la correspondance de cohérence entre l'encodage, le décodage et l'unicode ())
La plupart des bibliothèques sont déjà compatibles. (Si cela le rend n fois plus rapide comme ruby ou php, ça va être du charabia)
c'est tout.
Recommended Posts