Crache une liste de noms de fichiers, de dates de dernière modification et de codes de caractères en python3

anaconda3 installé Pour anaconda, voir Installer anaconda sur Mac

Installez chardet pour déterminer le code de caractère

--Si vous n'avez pas installé anaconda, pip installez ou installez anaconda --Installer chardet

zsh


$ anaconda search -t conda chardet #Trouver un chardet à anaconda
Using Anaconda API: https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
     Name                      |  Version | Package Types   | Platforms
     ------------------------- |   ------ | --------------- | ---------------
     anaconda/chardet          |    3.0.4 | conda           | linux-ppc64le, linux-64, win-32, osx-64, linux-32, win-64
...

$ anaconda show anaconda/chardet #Sélectionnez celui que vous aimez dans le chardet que vous avez recherché et découvrez comment l'installer
Using Anaconda API: https://api.anaconda.org
Name:    chardet
Summary:
Access:  public
Package Types:  conda
Versions:
   + 2.3.0
   + 3.0.2
   + 3.0.3
   + 3.0.4

To install this package with conda run:
     conda install --channel https://conda.anaconda.org/anaconda chardet

$ conda install --channel https://conda.anaconda.org/anaconda chardet #Copiez et collez la commande d'installation qui est sortie après vérification
Fetching package metadata .........
Solving package specifications: ..........

Package plan for installation in environment /Users/berry/.pyenv/versions/anaconda3-4.2.0:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    conda-env-2.6.0            |                0          601 B  anaconda
    chardet-3.0.4              |           py35_0         188 KB  anaconda
    requests-2.14.2            |           py35_0         725 KB  anaconda
    pyopenssl-16.2.0           |           py35_0          70 KB  anaconda
    conda-4.3.22               |           py35_0         516 KB  anaconda
    ------------------------------------------------------------
                                           Total:         1.5 MB

The following NEW packages will be INSTALLED:

    chardet:   3.0.4-py35_0  anaconda
    conda-env: 2.6.0-0       anaconda

The following packages will be UPDATED:

    conda:     4.2.9-py35_0           --> 4.3.22-py35_0 anaconda
    pyopenssl: 16.0.0-py35_0          --> 16.2.0-py35_0 anaconda
    requests:  2.11.1-py35_0          --> 2.14.2-py35_0 anaconda

Proceed ([y]/n)? y

Fetching packages ...
conda-env-2.6. 100% |############################################################################| Time: 0:00:00 304.59 kB/s
chardet-3.0.4- 100% |############################################################################| Time: 0:00:02  83.22 kB/s
requests-2.14. 100% |############################################################################| Time: 0:00:52  14.02 kB/s
pyopenssl-16.2 100% |############################################################################| Time: 0:00:02  25.32 kB/s
conda-4.3.22-p 100% |############################################################################| Time: 0:00:18  28.66 kB/s
Extracting packages ...
[      COMPLETE      ]|###############################################################################################| 100%
Unlinking packages ...
[      COMPLETE      ]|###############################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|###############################################################################################| 100%

$ 

Exportez le nom du fichier, la date et l'heure de modification et le code de caractère vers csv

python3


# support python3

import os
import datetime
import csv
from chardet.universaldetector import UniversalDetector

_path = './file/'

# get encode of a file
def univ_detect(file_dir):
    ud = UniversalDetector()
    with open(file_dir, 'rb') as fd:
        for b in fd:
            ud.feed(b)
            if ud.done:
                break
    ud.close()
    return ud.result['encoding']

# get a file name, path and last-modified timestamp
all_files = []
def get_file_list(file_path):
    # all_files = []
    file_list = [f for f in os.listdir(file_path)]
    for g in file_list:
        g_path = os.path.join(file_path, g)

        # last modified time        
        last_modified = os.path.getmtime(g_path)
        dt = datetime.datetime.fromtimestamp(last_modified).strftime('%Y%m%d_%H:%M:%S')

        # chardet
        encode = 'Directory'
        if os.path.isdir(g_path):
            pass
        else:
            encode = univ_detect(g_path)

        all_files.append([dt, g_path.split(_path,1)[1], ' '.join(['~',encode,'~'])])

        # subdirectory
        if os.path.isdir(g_path):
            subfile_list = [i for i in os.listdir(g_path)]
            for j in subfile_list:
                j_path = os.path.join(g_path, j)

                # last modified time
                sub_last_modified = os.path.getmtime(j_path)
                sub_dt = datetime.datetime.fromtimestamp(sub_last_modified).strftime('%Y%m%d_%H:%M:%S')

                # chardet
                encode = 'Directory'
                if os.path.isdir(j_path):
                    pass
                else:
                    encode = univ_detect(j_path)

                all_files.append([sub_dt, j_path.split(_path,1)[1], ' '.join(['~',encode,'~'])])
    return file_list
    # return all_files

print(get_file_list(_path))

csv_file = [['Last_modified', 'file_path', 'encode']] # Header
csv_file.extend(all_files)
with open('file_checker.csv', 'w') as h:
    writer = csv.writer(h, lineterminator='\n')
    writer.writerows(csv_file)

Recommended Posts

Crache une liste de noms de fichiers, de dates de dernière modification et de codes de caractères en python3
Afficher une liste d'alphabets en Python 3
[Python] Récupère le code de caractère du fichier
Copiez la liste en Python
[Python] [chardet] Détection automatique du code de caractère dans les fichiers
Liens et mémos de chaînes de code de caractères Python
Liste de code Python à déplacer et à mémoriser
Convertir le code de caractère du fichier avec Python3
Différentes façons de lire la dernière ligne d'un fichier csv en Python
[Python] Créer une liste de date et d'heure (type datetime) pour une certaine période
Liste des principales distributions de probabilité utilisées en apprentissage automatique et statistiques et code en python
Une collection de code souvent utilisée dans Python personnel
Liste du code Python utilisé dans l'analyse de Big Data
Regrouper par éléments consécutifs d'une liste en Python
Exemple d'obtention du nom du module et du nom de la classe en Python
Récapitulatif du traitement de la date en Python (datetime et dateutil)
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
[Python] Créer une liste de dates et d'heures pour une période spécifiée
Obtenez le nombre d'éléments spécifiques dans la liste python
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
[Note] Importation de fichiers dans le répertoire parent en Python
2.x, 3.x code de caractères des séries python
Décrypter une ligne de code en Python lambda, carte, liste
Créez le code qui renvoie "A et prétendant B" en python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Google recherche la chaîne sur la dernière ligne du fichier en Python
Code de caractère appris en Python
Une commande pour lister tous les fichiers par ordre de nom de fichier
Il est étonnamment difficile d'obtenir une liste de la dernière date et heure de connexion des espaces de travail
Traitement de code de caractère assimilé à "Attacher à une plaie" ~ Opération de nom de fichier déformé avec python3 ~
Définit la date de la dernière modification du fichier enfant sur la date de modification du répertoire parent
Essayez d'obtenir la liste des fils du bulletin d'information (je n'aime pas) avec Python.
Supprimer un caractère spécifique en Python s'il s'agit du dernier
Python vba pour créer une chaîne de date pour créer un nom de fichier
Liste des solveurs et modélisateurs de conception linéaire (LP) disponibles en Python
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
Obtenez une liste de fichiers dans un dossier avec python sans chemin
Obtenez le titre et la date de livraison de Yahoo! News en Python
Différence entre list () et [] en Python
[python] Gérer les fonctions dans une liste
Créer un fichier binaire en Python
Ecrire une liste de liens en langage C dans un style orienté objet (avec comparaison de code entre Python et Java)
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Obtenez une liste des packages installés dans l'environnement actuel avec python
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
[Python] Résumé de la conversion entre les chaînes de caractères et les valeurs numériques (code ascii)
Fichier Python CSV Conversion de code de caractère, extraction de nom de fichier, lecture, sortie, opération de fusion
python> Copier et coller du code> SyntaxError: Caractère non-ASCII '\ xe3' dans le fichier> - * - codage: utf-8 - * - Ajouter
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
python> Obtenir la date de dernière modification du fichier> mddt = time.ctime (os.path.getmtime (filepath))> Lun 7 mars 07:18:45 2016
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
Lecture de code de Safe, une bibliothèque pour examiner la force des mots de passe en Python