открыть папку с несколькими файлами в python [closed]

Как открыть папку с несколькими файлами? Я тестировал этот код, но он возвращает странный ответ.

import os
for ZebRa in os.listdir(os.getcwd()):
    num_words = 0
    for line in ZebRa:
        words = line.split ()
        num_words += len (words)
print ("The number of words:", num_words)

Просто возвращает 9. Но он должен подсчитать количество слов в 7 файлах, 70 текстовых файлах.

0
задан 25 February 2009 в 15:34

4 ответа

Как упомянуто, Ваш код не является действительно четким мне. Одна из ошибок, которые Вы делаете, - то, что Вы помещаете строкуnum_words = 0 в цикле, что означает, что на каждой подпапке, Вы начали бы рассчитывать от 0.

Если бы Вы хотите использовать Python, что работало бы, так или иначе должен использовать os.walk, который считал бы слова во всех файлах в каталоге и его подкаталогах, неважно, как они расположены:

#!/usr/bin/env python3
import os
dr = "/path/to/ZebRa"; n_words = 0
for root, dirs, files in os.walk(dr):
    for file in files:
        with open(root+"/"+file) as r:
            n_words += len(r.read().split())
print(n_words)

Примечание (примечания)

  1. Следует иметь в виду это, если Вы (когда-нибудь) редактировали текстовые файлы с, например. gedit, gedit вероятно, сделанный (скрытыми) файлами резервных копий, названными filename~. Эти файлы будут также считаны, если Вы не скажете сценарий не, который загрязняет подсчет слов.
  2. Также имейте в виду, что сценарий повредится, если он столкнется с нечитабельными файлами, снова, если Вы не говорите ему передавать, если он не может считать файл.

При редактировании обеих проблем в сценарий, сделал бы:

#!/usr/bin/env python3
import os
dr = "/path/to/ZebRa"; n_words = 0
for root, dirs, files in os.walk(dr):
    for f in [f for f in files if not f.startswith(".") and not f.endswith("~")]:
        try: 
            with open(root+"/"+f) as r:
                n_words += len(r.read().split())
        except UnicodeDecodeError:
            pass
print(n_words)
2
ответ дан 6 October 2019 в 11:10
  • 1
    Это не работает, поскольку я упомянул в вопросе, что Аппаратный ключ USB обнаруживается как CD-ROM не как ttyUSB. – snoop 2 July 2016 в 07:39

Хорошо ретроспективно это было чрезвычайно легкой вещью решить.

В Касании Ubuntu Приложения QML/HTML5 можно просто сделать стандартный Запрос XMLHTTP и затем проанализировать возвращенный HTML.

Вот легкий пример:

function get_html($url){
    //This function gets the HTML Page at $url and saves the 
    //HTML Data in $html. 
    //This function is asynchronous! Actions like "return $html" will probably
    //not work as intended!

    var xhr = new XMLHttpRequest;
    var $html;
    xhr.open("GET", $url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == XMLHttpRequest.DONE) {
            $html = xhr.responseText
        }
    }
    xhr.send();
}
5
ответ дан 31 October 2019 в 14:51

Вам нужен Python? Можно считать слова с помощью инструмента командной строки wc:

wc -w *

wc (короткий для подсчета слов), удобный инструмент для подсчета слов, символов или строк в текстовых файлах. Откройте терминал, перейдите к папке, содержащей файлы, Вы хотите считать слова и выполнить команду выше. Первый параметр -w средства считать слова (в противоположность строкам или символам). Можно передать имена файлов, чтобы рассчитать в определенных файлах или использовать подстановочные знаки, такой как * считать слова во всех файлах в текущей папке.

В случае, если Ваши файлы расположены в sub папках, самое легкое должно было бы использовать find получить список файлов:

find . -type f -exec wc -w {} +
2
ответ дан 31 October 2019 в 14:51

~/.bash_profile, ~/.bashrc или ~/.profile выполняются при открытии окна терминала, а не при входе на рабочий стол.

Если вы хотите использовать эту систему для ВСЕХ пользователей, создайте файл .desktop в /etc/xdg/autostart/. Пример:

[Desktop Entry]
Type=Application
Name=A custom Script
Exec=sudo /sbin/my_custom_script.sh
Icon=system-run
X-GNOME-Autostart-enabled=true

и создайте файл script.sh с вашей командой в нем. Это также гарантирует, что они не смогут окончательно удалить файл рабочего стола. Если вы хотите это для 1 пользователя, поместите скрипт в ~/.config/autostart/ и измените строку Exec на Exec=~/bin/acustomscript.sh

0
ответ дан 31 October 2019 в 14:51
  • 1
    @Nikos99 Извините за последний ответ. Я haven' t попробовал его, поскольку у меня нет сканера OBDII для использования с программным обеспечением. Насколько другое сообщение затронуто, другое сообщение об использовании вина и таким образом, я не думаю, что другое сообщение предоставит любую полезную информацию для выполнения scantool, потому что все винные программы взаимодействуют с аппаратными средствами вполне по-другому, чем они обычно делают и большую часть времени не имеют никакой возможности USB. Поскольку scantool является нормальным приложением Linux, я не думаю, что предложение поможет. Я проверю, чтобы видеть, могу ли я найти еще некоторую информацию о предмете. – mchid 27 June 2016 в 18:10

Другие вопросы по тегам:

Похожие вопросы: