Topic: ricerca file che non ha estensione  (Letto 153 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline mcasanova

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
ricerca file che non ha estensione
« il: Ottobre 08, 2020, 20:15 »
Ciao, sto cercando una soluzione per individuare un file che non ha estensione.

Ho scritto parte di questo codice cosi, ma non so come rappresentare l'assenza dell'estensione

import os

DIR="C:\\test\\"

fileExt = ""

for cartella, sottocartella, files in os.walk(os.path.dirname(DIR)):
    for file in files:
        if file.endswith(fileExt):
            print(file)

ovviamente in questo modo me li elenca tutti cosi:

PS C:\Users\ombre\Desktop>  cd 'c:\Users\ombre\Desktop'; & 'C:\Users\ombre\AppData\Local\Programs\Python\Python39\python.exe' 'c:\Users\ombre\.vscode\extensions\ms-python.python-2020.9.112786\pythonFiles\lib\python\debugpy\launcher' '59852' '--' 'c:\Users\ombre\Desktop\test.py'
Nuovo documento di testo
Nuovo documento di testo - Copia.txt
Nuovo documento di testo.txt

non so come sostituire   fileExt = ""

Grazie a chi mi da una mano.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.105
  • Punti reputazione: 9
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #1 il: Ottobre 08, 2020, 21:50 »
definisci "estensione" in modo rigoroso, e avrai risolto il problema

Offline mcasanova

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #2 il: Ottobre 09, 2020, 10:09 »
Scusami non capisco come dovrei procedere, mi puoi fare un esempio?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 291
  • Punti reputazione: 0
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #3 il: Ottobre 09, 2020, 11:58 »
Scusami non capisco come dovrei procedere, mi puoi fare un esempio?

Il buon @Ric Ti stava invitando a pensarci un po' su : cosa è che caratterizza una "estensione"? ... se proprio non viene in mente, basterebbe una breve ricerca, in wikipedia troviamo :
Citazione
'estensione di un file, in ambito informatico, è un suffisso, ovvero una breve sequenza di caratteri alfanumerici (tipicamente tre), posto alla fine del nome di un file e separato dalla parte precedente con un punto, attraverso il quale ...
Quindi, in presenza di una estensione, dovrebbe esserci almeno un punto!

Giacché sono meno buono di @RicPol (se ci arrivi da Te Ti fa un gran bene) Ti ho preparato un esempio come richiesto. Posizionato in una direttrice con delle sub-directory così fatte :
NzP:~$ tree
.
├── mand_fuori_gest
│   ├── mand_14_2019_lettera.pdf
│   ├── mand_14_2019.pdf
│   ├── rev_12_13_lettera.pdf
│   ├── rev_12_2019
│   ├── rev_13_2019.pdf
│   ├── rev_14_2019.pdf
│   ├── rev_14_lettera_copia.pdf
│   ├── rev_14_lettera.pdf
│   ├── riepilogo_mand.pdf
│   └── riepilogo_rev.pdf
└── modelli_vari
    ├── incontro_2
    ├── incontro.doc
    ├── incontro.odt
    ├── nuovo_logo.png
    ├── nuovo_modello_carta_intestata.odt
    ├── nuovo_modello_ferie.odt
    ├── nuovo_modello_lettera_2.odt
    ├── nuovo_modello_lettera_3.odt
    ├── nuovo_modello_lettera_4.odt
    ├── nuovo_modello_lettera.odt
    ├── nuovo_modello_lettera.pdf
    ├── Testata_bilancio
    └── uso_mezzo_proprio.pdf

2 directories, 23 files

Se scorri i file, vedi che ve ne sono tre privi di estensione, per tirarli fuori non dobbiamo far altro che dividere il nome del file tramite il punto con split e, se gli elementi sono più di uno avremo (probabilmente) una estensione
>>> for cartella, sottocartella, files in os.walk(os.getcwd()):
for f in files:
if len(f.split('.')) == 1:
print(f)


rev_12_2019
incontro_2
Testata_bilancio
>>>

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.105
  • Punti reputazione: 9
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #4 il: Ottobre 09, 2020, 12:28 »
Scusami non capisco come dovrei procedere, mi puoi fare un esempio?
Ragionando.

Dovresti procedere ragionando. Anche se costa più fatica del copincolla degli esempi e delle ricettine gentilmente fornite.

E infatti la ricettina gentilmente fornita è... beh, molto dubbia... guarda caso.

E se un file si chiama pippo.pluto.paperino? Diresti che "paperino" qui è un'estensione? Ops! c'è il punto, ma nessuna estensione... accidenti!
E se un file si chiama archive.tar.gz? Non diresti forse che qui l'estensione è "tar.gz"? Ooooops... l'estensione ha un punto in mezzo (oppure: ci sono due estensioni di fila)... accidenti!

E quindi, ragionando... ragionando... ragionando... ripeto la domanda: che cosa è un'estensione?

(poi ovviamente, certo, ci mancherebbe: probabilmente per quel che stai cercando di fare, vedere se c'è il punto basta e avanza... finché poi non basta più)

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 291
  • Punti reputazione: 0
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #5 il: Ottobre 09, 2020, 13:00 »
...E infatti la ricettina gentilmente fornita è... beh, molto dubbia... guarda caso.

Su questo non ci piove, non per niente vi era un "probabilmente" tra parentesi :)

Comunque, in mancanza di un punto, di certo estensione non c'è (che sarebbe il quesito posto) ... più interessante, certamente, sarebbe la problematica inversa, ossia : riconoscere il tipo di file in assenza di estensione, faccenda che, a volte, mi è capitata, utilizzando un s.o. nel quale le estensioni non sono, poi, significative ... non mi sono ancora posto 'sto specifico problema in python ;)

[Edit] ... faccenda su cui, python, sembra piuttosto amichevole, devo dire
>>> import os
>>> import magic
>>> os.chdir('my_tmp/da_masterizzare/modelli_vari')
>>> mime = magic.Magic(mime=True)
>>> mime.from_file('Testata_bilancio')
'application/vnd.oasis.opendocument.text'
>>>

Il file è stato riconosciuto correttamente.
« Ultima modifica: Ottobre 09, 2020, 13:14 da nuzzopippo »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.105
  • Punti reputazione: 9
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #6 il: Ottobre 09, 2020, 16:25 »
> in mancanza di un punto, di certo estensione non c'è
vero...

> (che sarebbe il quesito posto)
...non vero. O almeno, forse l'OP può accontentarsi nel suo caso specifico, ma in generale il quesito non è questo.

Torno a ripetere... se un file si chiama "pippo.pluto.paperino", tu diresti che "paperino" è l'estensione del file? Forse no, se intendi per estensione "quel suffisso che consente di riconoscere il tipo di file" (detto così alla buona). Eppure, come vedi, il punto c'è in "pippo.pluto.paperino".

E quindi? La domanda dell'OP ha dei risvolti interessanti, a ragionarci sopra.

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 291
  • Punti reputazione: 0
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #7 il: Ottobre 10, 2020, 12:57 »
... forse l'OP può accontentarsi nel suo caso specifico, ma in generale il quesito non è questo.

Torno a ripetere... se un file si chiama "pippo.pluto.paperino", tu diresti che "paperino" è l'estensione del file? ...
No, certo che no.

E quindi? La domanda dell'OP ha dei risvolti interessanti, a ragionarci sopra.
Risvolti interessanti? Sicuramente!
Come è sicuro che si va "in confusione" tra estensioni, magic-number, meta-dati e quant'altro ;)
le modalità di riconoscimento delle tipologie dei files nei differenti sistemi operativi sono state "convenzioni" diciamo un po' "localizzate" dagli interessi del momento di alcune aziende ... non parliamo, poi, di tipi che usano disinvoltamente le "estensioni" pensando tantomeloleggosoloio  :D

Identificare correttamente le tipologie di files? Il discorso è interessante,c'è sempre molto da imparare.

Solo per restare nella limitata sfera delle "estensioni" già questa pagina di wikipedia da pallida idea di che lavoro "ci vorrebbe" per fare un lavoro di riconoscimento (ne mancano diverse a me "familiari") di sola valutazione di stringhe

 ... ed ora la domanda : quale è il Tuo intendimento con "risvolto interessante"?

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.105
  • Punti reputazione: 9
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #8 il: Ottobre 10, 2020, 19:02 »
>  ... ed ora la domanda : quale è il Tuo intendimento con "risvolto interessante"?

Mah guarda, proprio nessuno.
La questione in sé, personalmente, mi sembra piuttosto noiosa. Il concetto di "estensione" è sempre stato confuso e mal definito. In particolare, la domanda dell'OP è proprio quella a cui *non* è possibile davvero rispondere... quando i software e i sistemi operativi (Windows, in sostanza) vogliono usare le estensioni, la domanda che si fanno è sempre quella inversa... ovvero se il file ha una determinata estensione, o magari una compresa in una lista. Nessuno ha interesse a chiedersi se è possibile che il file NON abbia proprio assolutamente nessuna estensione, per il semplice motivo che non serve a nessuno scopo pratico. Quindi questo caso è lasciato piuttosto aperto all'interpretazione. La domanda su "pippo.pluto.paperino" era una domanda trabocchetto: la verità è che "paperino" potrebbe benissimo essere un'estensione... solo che è molto ma molto improbabile che qualcuno sia interessato a registrare un'estensione ".paperino"... ma non c'è un modo algoritmico di distinguere tra ".paperino" e ".doc". E non interessa a nessuno (a mia conoscenza) fare una cosa del genere.
Considera come funzionano le cose in Windows. Se un programma desidera gestire un certo tipo di file (che so... Acrobat reader per i ".pdf"), allora al momento dell'installazione (o anche dopo) chiede a Windows di registrare "a suo nome" una certa estensione. Se Windows lo permette (ovvero l'utente conferma), allora Window aggiunge all'elenco delle estensioni registrate anche ".pdf", e la associa ad Acrobat reader (l'elenco sta nel Registro di configurazione).
Ma se tu hai un Windows senza nessun lettore pdf installato, allora Windows non ha l'estensione ".pdf" registrata, per il semplice fatto che mai nessun programma gli ha chiesto di farlo. Ma allora, su quel Windows, un file che si chiama "pippo.pdf", ha un'estensione oppure no? Di sicuro Windows ti direbbe di no. Ops. Ma come!? Windows NON SA che cosa vuol dire ".pdf"? Beh, no... Non esiste un registro internazionale ufficiale delle estensioni dei file... e Windows non ha nessun interesse a mantenere un suo elenco, a prescindere. Perché dovrebbe? Se un programma ha un'estensione da registrare, lo farà. Se no, amen. La nostra ".paperino" non è un'estensione perché nessun programma, verosimilmente, la registrerà mai. Ma niente mi vieta di scrivere un programma che invece la vuole registrare... E allora, per i Windows dove quel programma è installato, ".paperino" sarà un'estensione.

Quindi come vedi è piuttosto fumosa la domanda "questo file ha un'estensione o no". Il mio interesse nella cosa era puramente didattico, per invitare l'OP a capire la necessità di definire in modo rigoroso i problemi, quando si vuole fare programmazione. Cioè, nel caso che, hai visto mai, l'OP fosse interessato a fare programmazione... eh.

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 291
  • Punti reputazione: 0
    • Mostra profilo
Re:ricerca file che non ha estensione
« Risposta #9 il: Ottobre 11, 2020, 11:27 »
...
Quindi come vedi è piuttosto fumosa la domanda "questo file ha un'estensione o no". Il mio interesse nella cosa era puramente didattico, per invitare l'OP a capire la necessità di definire in modo rigoroso i problemi, quando si vuole fare programmazione. Cioè, nel caso che, hai visto mai, l'OP fosse interessato a fare programmazione... eh.

Capisco, ed il Tuo è un ottimo invito, purtroppo, fin troppo spesso disatteso.

 :birrame: