0
votes

Comment forcer le script pour fermer tous les fichiers ouverts en fonction de leur répertoire?

est-il possible de fermer des fichiers ouverts basés uniquement sur leurs répertoires? Je souhaite fermer des fichiers avec une extension spécifique. Si ce n'est pas possible, je peux fermer tous les fichiers ouverts. Mon code est devenu si longtemps que je ne peux pas contrôler la fermeture des fichiers de l'autre sens. Je prépare une demande d'utilisateurs externes et j'ai développé un bouton "RESET", mais j'ai rencontré un problème d'accès à une cause de dossier par ces fichiers sont toujours ouverts.

J'utilise Psutil pour obtenir une liste de tous les fichiers ouverts de mon script .PYPY. P>

[popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\iconcache_48.db', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1B.shp', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1A.dbf', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1A.shp', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\explorerframe.dll.mui', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\polygonSet1B.shp', fd=-1),
popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\iconcache_idx.db', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\user32.dll.mui', fd=-1),
popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\thumbcache_idx.db', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1B.shx', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\PolygonSet1A.dbf', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\obszar_zainteresowania.dbf', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\dui70.dll.mui', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1B.dbf', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\polygonSet1B.dbf', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\shell32.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\propsys.dll.mui', fd=-1),
popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\thumbcache_96.db', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\obszar_zainteresowania.shp', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\NetworkItemFactory.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\comdlg32.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\Fonts\\StaticCache.dat', fd=-1),
popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\iconcache_256.db', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\PolygonSet1A.shp', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\windows.storage.dll.mui', fd=-1),
popenfile(path='D:\\jan\\apka_update\\temp\\17-Z1-20180704_Lk7_156.000-180.000_niepelne\\intersection1A.shx', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\mpr.dll.mui', fd=-1),
popenfile(path='C:\\Windows\\System32\\pl-PL\\KernelBase.dll.mui', fd=-1),
popenfile(path='C:\\Users\\Jan\\AppData\\Local\\Microsoft\\Windows\\Explorer\\iconcache_16.db', fd=-1)]    


0 commentaires

3 Réponses :


0
votes

Vous pouvez tester le répertoire et l'extension à l'aide du bâtiment OS.PATH < / a> bibliothèque, ou la nice path.py . xxx

ou, avec chemin.py: xxx


2 commentaires

Merci pour la réponse. Ma question est la suivante: exactement "Fermer mon fichier"? Je sais comment extraire des annuaires et des noms de fichiers dans des fichiers avec une extension spécifique, mais je ne sais pas comment la fermeture de ces fichiers sans utiliser par exemple f.close () , car je ne sais pas où je définis f dans mon code. Tu sais ce que je veux dire?


J'ouvre le même fichier à plusieurs reprises à différentes étapes de mon script. Lorsque je répertorie tous les fichiers ouverts de mon an .py, il n'y a aucune information sur la scène à quel fichier devenait Néguelle.



0
votes

Mon code est devenu si longtemps que je ne peux pas contrôler la fermeture des fichiers de l'autre sens.

Alors il est temps de tout arrêter et de réparer votre code. En fait, votre code devrait fermer chaque fichier dès qu'il est fait avec elle ( Le avec est votre ami ici ), et j'ai du mal à penser à quelque raison que ce soit pour garder ces nombreux fichiers ouverts de temps en temps.

Dans tous les cas: vous devez avoir une référence à un fichier pour la fermer, période. Si vous ouvrez un fichier, ne le fermez pas et ne jetez pas la référence au fichier alors bien ... Dommage.

OK, on ​​pourrait éventuellement être une solution de contournement très qui serait de remplacer tous les appels Open () avec votre propre version qui stocke le fichier ouvert dans une liste globale . Mais vraiment, cela ne va que faire pire votre code, alors faites la bonne chose: corrigez votre code pour fermer correctement les fichiers au bon endroit.


0 commentaires

0
votes

Quelque chose comme ça devrait faire le tour. XXX

Référence:


0 commentaires