Ваш код начинается с:
f = open('C:/movies/sample06.txt')
for x in f:
line = f.readline()
Вы перебираете свой файл f
построчно в цикле for
. Но как только следующая строка в файле будет прочитана в x
, вы прочитаете следующую в line
. Поскольку вы ничего не делаете с x
, эта строка теряется.
Итак, вам не нужно использовать readline()
для итерации строк вашего файла. Просто сделайте:
with open('C:/movies/sample06.txt') as f:
for line in f:
print(line, end='')
words = line.split(" ")
print(words)
num_words = len(words)
print(num_words)
Обратите внимание на идиому with open....
, которая гарантирует, что ваш файл закроется независимо от того, что происходит в вашем скрипте.
Каждому поставщику связали GUID с его классом. Для нахождения гуида откройте regedit и ищите реестр имя поставщика. Например, поиск "провайдера OLE DB Microsoft Jet 4.0". Когда Вы находите его, копируете ключ (значение GUID) и использование, которые в реестре ищут в Вашем приложении.
function OleDBExists : boolean;
var
reg : TRegistry;
begin
Result := false;
// See if Advantage OLE DB Provider is on this PC
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
Result := reg.OpenKeyReadOnly( '\SOFTWARE\Classes\CLSID\{C1637B2F-CA37-11D2-AE5C-00609791DC73}' );
finally
reg.Free;
end;
end;
Можно получить имя поставщика ADO и проверить его в реестр в пути HKEY_CLASSES_ROOT \[Provider_Name].
Самый легкий путь только попытался бы установить связь при запуске и зафиксировал бы ошибку?
я подразумеваю, что Вы могли бы вернуть несколько различных ошибок в зависимости от, например, пользователь онлайн, но они - случаи, на которые необходимо смочь протестировать.
Я полагаю, что OLEDB возражает рассматриваемый, прокладываются под землей где-нибудь в реестре, начиная с OLEDB / ADO является решением COM. Мое предположение должно было бы видеть, можно ли найти GUID, что драйвер установлен как в реестре.
namespace Common {
public class CLSIDHelper {
[DllImport("ole32.dll")]
static extern int CLSIDFromProgID([MarshalAs(UnmanagedType.LPWStr)] string lpszProgID, out Guid pclsid);
public static Guid RetrieveGUID(string Provider) {
Guid CLSID = Guid.Empty;
int Ok = CLSIDFromProgID(Provider, out CLSID);
if (Ok == 0)
return CLSID;
return null;
}
}
}