Как открыть папку с несколькими файлами? Я тестировал этот код, но он возвращает странный ответ.
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 текстовых файлах.
Как упомянуто, Ваш код не является действительно четким мне. Одна из ошибок, которые Вы делаете, - то, что Вы помещаете строку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)
Примечание (примечания)
gedit
, gedit
вероятно, сделанный (скрытыми) файлами резервных копий, названными filename~
. Эти файлы будут также считаны, если Вы не скажете сценарий не, который загрязняет подсчет слов.При редактировании обеих проблем в сценарий, сделал бы:
#!/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)
Хорошо ретроспективно это было чрезвычайно легкой вещью решить.
В Касании 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();
}
Вам нужен Python? Можно считать слова с помощью инструмента командной строки wc
:
wc -w *
wc
(короткий для подсчета слов), удобный инструмент для подсчета слов, символов или строк в текстовых файлах. Откройте терминал, перейдите к папке, содержащей файлы, Вы хотите считать слова и выполнить команду выше. Первый параметр -w
средства считать слова (в противоположность строкам или символам). Можно передать имена файлов, чтобы рассчитать в определенных файлах или использовать подстановочные знаки, такой как *
считать слова во всех файлах в текущей папке.
В случае, если Ваши файлы расположены в sub папках, самое легкое должно было бы использовать find
получить список файлов:
find . -type f -exec wc -w {} +
~/.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